美文网首页
Android LinearLayout设置selector并将

Android LinearLayout设置selector并将

作者: 五月笑忘 | 来源:发表于2019-08-22 17:42 被阅读0次

在LinearLayout中,如果同时为LinearLayout与子TextView设置selector,是可以实现的,代码如下

         <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:

<?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:

<?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加上

              android:duplicateParentState="true"

android:duplicateParentState指的是当前控件是否跟随父控件的(点击、焦点等)状态


image.png

PS:网上有说用RadioGroup来实现,但是不适用于用RecyclerView展示的LinearLayout
PS2:尝试过使用CheckBox,但是重复点击会有checked跟unchecked状态重复切换,不适用

相关文章

网友评论

      本文标题:Android LinearLayout设置selector并将

      本文链接:https://www.haomeiwen.com/subject/jhogsctx.html