Nano Hash - криптовалюты, майнинг, программирование

Круглая форма внутри прямоугольника

У меня есть следующее рисование, отображаемое внутри прямоугольного переключателя:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">

            <solid android:color="@color/cerulean_blue"/>
            <stroke android:color="@android:color/transparent"/>

            <corners
                android:radius="@dimen/number_selection_rounding_radius"/>
        </shape>
    </item>
    <item android:left="10dp" android:right="10dp" android:top="5dp" android:bottom="5dp">
        <shape android:shape="oval">

            <solid android:color="@color/light_background"/>
            <stroke android:color="@android:color/transparent"/>

        </shape>
    </item>
</layer-list>

Это создает овал в качестве внутренней формы. Я хотел бы сделать его кругом независимо от формы представления. Я попытался указать различные значения для элемента размера в форме. Я понимаю, что это должно повлиять на масштабирование, но это абсолютно не влияет на используемые значения.

Можно ли в этом случае сохранить идеальный круг или нужно это делать программно?


  • Вы можете сделать его идеальным кругом, просто сделайте верх = 10dp и низ = 10dp. 18.01.2017

Ответы:


1

Я отказался от прямоугольных кнопок-переключателей и заставил их быть квадратными с этим классом:

    public class SquareToggleButton extends ToggleButton {
    public SquareToggleButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public SquareToggleButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareToggleButton(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);

        int desiredSize = Math.max(widthSize,heightSize);

        int width;
        int height;

        // Measure Width
        if (widthMode == MeasureSpec.EXACTLY) {
            // Must be this size
            width = widthSize;
        } else if (widthMode == MeasureSpec.AT_MOST) {
            // Can't be bigger than...
            width = Math.min(desiredSize, widthSize);
        } else {
            // Be whatever you want
            width = desiredSize;
        }

        // Measure Height
        if (heightMode == MeasureSpec.EXACTLY) {
            // Must be this size
            height = heightSize;
        } else if (heightMode == MeasureSpec.AT_MOST) {
            // Can't be bigger than...
            height = Math.min(desiredSize, heightSize);
        } else {
            // Be whatever you want
            height = desiredSize;
        }

        int side = Math.max(width,height);

        setMeasuredDimension(side, side);
    }
}
18.01.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..