Центрирование зоны удара вокруг RadioButton - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть радиогруппа с 2 радиокнопками без текста.Далее я опишу все очень подробно и покажу все, что я пробовал.Компоновка выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        tools:ignore="RtlHardcoded">

        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="50dp"
            android:scaleX="2"
            android:scaleY="2" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="55dp"
            android:layout_marginRight="50dp"
            android:scaleX="2"
            android:scaleY="2" />
    </RadioGroup>
</android.support.constraint.ConstraintLayout>

enter image description here

Как видно, область нажатия (активируемая) охватывает точно кнопки (отображаются синим прямоугольником)).

Теперь я бы хотел увеличить размер интерактивной области.Когда я добавляю android:paddingTop="30dp" и android:paddingBottom="30dp" к каждой кнопке, я получаю следующую раскладку:

enter image description here

Это хорошая, теперь интерактивная областьувеличен сверху и снизу.Но я также хотел бы расширить интерактивную область слева и справа.Поэтому я добавляю android:paddingLeft="30dp" к каждой кнопке.В результате получается следующее:

enter image description here

Это плохо, потому что кликабельная область (синие прямоугольники) больше не центрирована вокруг кнопки.Когда я добавляю android:paddingRight="30dp" к каждой кнопке (что эквивалентно замене всех вышеприведенных отступов просто android: padding = "30dp"), становится еще хуже:

enter image description here

Я перепробовал все, но у меня не получается сфокусировать кликабельную область вокруг кнопки.Поэтому я попытался переместить кликабельную область во время выполнения, используя

RadioButton radioButton= findViewById(R.id.radioButton1);
final View parent = (View) radioButton.getParent();
parent.post(new Runnable() {
    public void run() {
        final Rect rect = new Rect();
        radioButton.getHitRect(rect);
        rect.left -= 100;
        rect.right -= 100;
        parent.setTouchDelegate(new TouchDelegate(rect, radioButton));
    }
});

. Это также не работает, кликабельная область как-то вообще не меняется.

Есть ли способ получитькликабельная область вокруг кнопок?Любая помощь высоко ценится.

...