AndroidTV开发中,父layout布局获取焦点,子控件背景颜色也随之改变

我们知道,让一个布局或者控件随着状态(是否获取焦点),改变背景颜色可以通过在drawable目录下创建selector来实现。

前些日子UI出了一个设计:列表(RecyclerView)展示数据,每一个item都是一个RelativeLayout的布局,item获取焦点之后,RelativeLayout的背景颜色和里面的TextView的颜色都会发生变化。

下面是item的layout文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/dp_452"
    android:layout_height="@dimen/dp_93"
    android:background="@drawable/selector_friend_bg"
    android:focusable="true">

    <TextView
        android:id="@+id/item_writer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:duplicateParentState="true"
        android:layout_centerInParent="true"
        android:textColor="@drawable/selector_btn_txt"
        android:textSize="@dimen/dp_17" />
</RelativeLayout>

RelativeLayout布局设置android:focusable="true",背景设置需要的selector。

重点是子控件TextView设置属性android:duplicateParentState="true",该属性的意思是重复父控件焦点状态。然后再把TextView的字体颜色设置需要的selector。

Tips:android:duplicateParentState="true"属性可以依次向下传递,比如RelativeLayout中包裹RelativeLayout然后是TextView,可以把两个RelativeLayout和最终的TextView依次设置android:duplicateParentState="true",即可把焦点状态从第一个RelativeLayout传递到最终的TextView。


猜你喜欢

转载自blog.csdn.net/u014330846/article/details/80175359