Android如何使布局中图(ImageButton)和文字(TextView)同时获得press和selected状态

问题

布局中有图片和文字,希望按下时,同时有press状态,并且同时能有select状态。
Android如何使布局中图(ImageButton)和文字(TextView)同时获得press和selected状态_第1张图片

实现

需要注意的是,子view需要调用这3个属性,使其不获得焦点,所有状态都给布局LinearLayout,所有的view都需加上对应的selector。

		android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"

布局文件

//布局
<LinearLayout
    android:id="@+id/ll_item"
    android:layout_width="246dp"
    android:layout_height="72dp"
    android:gravity="center"
    android:background="@drawable/btn_aqua"
    android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/ib_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_front_aqua"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        android:layout_marginLeft="17dp"
        android:focusableInTouchMode="false"
        android:textColor="@drawable/textselectoraqua"
        android:textSize="@dimen/text_size31" />

LinearLayout>

selector

// btn_aqua.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:drawable="@drawable/camera_bottom_button_aqua_p" android:state_pressed="true"/>
    <item android:drawable="@drawable/camera_bottom_button_f" android:state_selected="true"/>
    <item android:drawable="@color/Transparent"/>

selector>

//btn_front_aqua.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/camera_icon_front_p" android:state_pressed="true"/>
    <item android:drawable="@drawable/camera_icon_front_aqua_f" android:state_selected="true"/>
    <item android:drawable="@drawable/camera_icon_front_n"/>

selector>

//textselectoraqua.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="@color/black">item>
    <item android:state_selected="true" android:color="@color/themeaqua">item>
    <item android:color="@color/white">item>

selector>

在代码里,只需要对布局R.id.ll_item进行点击监听和setSelected就行了,图片和文字自然就和布局一样,表现出同样的状态。

你可能感兴趣的:(Android)