Увеличение размера кликабельной области RadioButton - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть RadioGroup с 2 RadioButton в Android (Android 5.1), как показано ниже.Есть две проблемы.Во-первых, кликабельная область (изображена синим цветом на изображении внизу) не центрирована вокруг кнопки (круга).Во-вторых, я хотел бы увеличить область, активируемую кликом, но при этом размер круга (кнопки) должен быть одинаковым.

Как увеличить и центрировать область, активируемую кнопкой, вокруг кнопки?

<RadioGroup
    android:id="@+id/group"
    android:layout_width="140dp"
    android:layout_height="50dp"
    android:layout_marginLeft="212dp"
    android:layout_marginTop="8dp"
    android:orientation="horizontal"
    android:visibility="visible"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/image"
    tools:ignore="RtlHardcoded">

    <RadioButton
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:scaleX="2"
        android:scaleY="2" />

    <RadioButton
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:scaleX="2"
        android:scaleY="2" />

</RadioGroup>

enter image description here

РЕДАКТИРОВАТЬ : Я обновил свой макет и добавил отступы.Кликабельная область не больше, но, к сожалению, область находится за пределами кнопки.Я бы хотел, чтобы кликабельная область была сосредоточена вокруг кнопки.Как это можно сделать?

<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="212dp"
    android:layout_marginTop="8dp"
    android:orientation="horizontal"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/image"
    tools:ignore="RtlHardcoded">

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="40dp"
        android:padding="30dp"
        android:scaleX="2"
        android:scaleY="2" />

    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="55dp"
        android:padding="30dp"
        android:scaleX="2"
        android:scaleY="2" />

</RadioGroup>

enter image description here

Ответы [ 4 ]

0 голосов
/ 20 декабря 2018

final View parent = (View) view.getParent();
parent.post( new Runnable() {
    public void run() { 
        final Rect rect = new Rect(); 
        button.getHitRect(rect); 
        rect.top -= 100;   
        rect.left -= 100;   
        rect.bottom += 100;          
        rect.right += 100;  
        parent.setTouchDelegate( new TouchDelegate( rect , button)); 
    } 
}); 

увеличить, т. Е. Удалить вид

0 голосов
/ 20 декабря 2018

Чтобы увеличить размер интерактивной области, вы можете установить отступ для RadioButton.

0 голосов
/ 20 декабря 2018

Самый простой способ увеличить кликабельный размер - использовать отступы

<RadioButton
        android:id="@+id/someId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="40dp"
        />

Вот изображение

enter image description here

0 голосов
/ 20 декабря 2018

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

...