Android记录7--LinearLayout设置selector并将状态传递到子view
在LinearLayout中,如果同时为LinearLayout与子TextView设置selector,是可以实现的,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_company" android:layout_width="match_parent" android:layout_height="102dp" android:layout_marginStart="25dp" android:layout_marginEnd="25dp" android:layout_marginBottom="20dp" android:background="@drawable/selector_company" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true">
<TextView android:id="@+id/tv_company_name" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginStart="20dp" android:drawableStart="@mipmap/company_uncheck" android:drawablePadding="20dp" android:gravity="center_vertical" android:text="test" android:textColor="@drawable/selector_company_text" android:textSize="19sp" /> </LinearLayout>
|
selector文件为:
selector_company.xml:
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/company_selected" android:state_focused="true" /> <item android:drawable="@drawable/company_selected" android:state_checked="true" /> <item> <shape> <corners android:radius="15dp" /> <solid android:color="@color/white" /> </shape> </item> </selector>
|
selector_company_text.xml:
1 2 3 4 5 6
| <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:color="@color/white" /> <item android:state_pressed="true" android:color="@color/white" /> <item android:color="@color/title" android:state_checked="false" /> </selector>
|
此时,textview可以响应pressed状态,但是!!
无法与LinearLayout一样保持focused状态
##解决办法:
为TextView加上
1
| android:duplicateParentState="true"
|
android:duplicateParentState指的是当前控件是否跟随父控件的(点击、焦点等)状态
PS:网上有说用RadioGroup来实现,但是不适用于用RecyclerView展示的LinearLayout
PS2:尝试过使用CheckBox,但是重复点击会有checked跟unchecked状态重复切换,不适用
前Android/Vue开发,现Infra从业人员,主营监控/AWS