У меня есть радиогруппа с 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>
Как видно, область нажатия (активируемая) охватывает точно кнопки (отображаются синим прямоугольником)).
Теперь я бы хотел увеличить размер интерактивной области.Когда я добавляю android:paddingTop="30dp"
и android:paddingBottom="30dp"
к каждой кнопке, я получаю следующую раскладку:
Это хорошая, теперь интерактивная областьувеличен сверху и снизу.Но я также хотел бы расширить интерактивную область слева и справа.Поэтому я добавляю android:paddingLeft="30dp"
к каждой кнопке.В результате получается следующее:
Это плохо, потому что кликабельная область (синие прямоугольники) больше не центрирована вокруг кнопки.Когда я добавляю android:paddingRight="30dp"
к каждой кнопке (что эквивалентно замене всех вышеприведенных отступов просто android: padding = "30dp"), становится еще хуже:
Я перепробовал все, но у меня не получается сфокусировать кликабельную область вокруг кнопки.Поэтому я попытался переместить кликабельную область во время выполнения, используя
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));
}
});
. Это также не работает, кликабельная область как-то вообще не меняется.
Есть ли способ получитькликабельная область вокруг кнопок?Любая помощь высоко ценится.