2016-01-26 3 views
1

Ripple проблемы эффекта при нажатии кнопки флажка установлена ​​нуль:Ripple позиция эффекта, когда кнопка флажка установлена ​​на нуль

Стиля используется

<style name="MyRow"> 
<item name="android:button">@null</item> 
<item name="android:drawableRight">@drawable/abc_btn_radio_material</item> 
<item name="android:drawableEnd">@drawable/abc_btn_radio_material</item> 
<item name="android:layout_width">match_parent</item> 
<item name="android:layout_height">wrap_content</item> 
<item name="android:padding">@drawable/dafaultPadding</item> 

Это RadioGroup с кнопками радио.

<RadioGroup android:layout_height="wrap_content" android:layout_width="match_parent"> 

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow" 
    android:id="@+id/one" 
    android:text="@string/someText" 
    /> 

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow" 
    android:id="@+id/two" 
    android:text="@string/someText" 
    /> 

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow" 
    android:id="@+id/three" 
    android:text="@string/someText" 
    /> 

</RadioGroup> 

Ripple animation работает как ожидалось, когда свойство android: button установлено на какое-то допустимое. Когда значение null, оно имеет такое поведение в Marshmallow (рябь в середине строки).

Click Here to see the image

В леденец работает правильно за то, что он не имеет никаких границ и пульсация расширяется до целого окна, за исключением.

Единственный способ решить это в моем сознании - создать пользовательские представления для каждой строки, содержащей текстовое изображение слева от радиообмена. Но таким образом мне придется создать монстров-подобный контроллер (чтобы выбрать флажки, когда я нажимаю на текстовое изображение), и я потеряю все преимущества радиогруппы.

enter image description here

ответ

3

Попробуйте использовать следующий стиль для радио-кнопки:

<style name="RadioButton"> 
    <item name="android:background">?selectableItemBackground</item> 
    <item name="android:button">@null</item> 
    <item name="android:drawableRight">?android:attr/listChoiceIndicatorSingle</item> 
    <item name="android:drawablePadding">@dimen/yourDrawablePadding</item> 
    <item name="android:padding">@dimen/buttonPadding</item> 
</style> 

Прежде всего, ?selectableItemBackground устранит проблему пульсации.

Также используйте ?android:attr/listChoiceIndicatorSingle в качестве вашего рисунка, чтобы разрешить красивую анимацию материала при проверке/снятии флажка.

Вы можете увидеть разницу ниже (Google Pixel XL, 7.1.2):

enter image description here

0

У меня была аналогичная проблема. Попробуйте установить <item name="android:background">?attr/selectableItemBackground</item> в вашем стиле или использовать пользовательскую рябь и установить ее.

0

I имеет такую ​​же проблему с радиокнопки, попробуйте добавить андроид: кнопка = «@ вытяжке/radiobutton_drawable» с андроида: paddingLeft = «10dp» и удалить андроид: drawableRight

Смежные вопросы