Android layout 可单击线性布局在单击时不高亮显示

Android layout 可单击线性布局在单击时不高亮显示,android-layout,Android Layout,在我的Android应用程序中,我有一个包含其他视图的LinearLayout视图。LinearLayout是可单击的,但单击时,它不会像应该的那样突出显示橙色。我已经尝试使用选择器,但它不起作用 如何使其高亮显示?如果希望高亮显示为橙色,可以在线性布局中使用此选项 android:background="@android:drawable/list_selector_background" 它是Android的默认列表选择器颜色。您还可以通过创建自己的可绘制图形自定义颜色。大概是这样

在我的Android应用程序中,我有一个包含其他视图的LinearLayout视图。LinearLayout是可单击的,但单击时,它不会像应该的那样突出显示橙色。我已经尝试使用选择器,但它不起作用


如何使其高亮显示?

如果希望高亮显示为橙色,可以在线性布局中使用此选项

    android:background="@android:drawable/list_selector_background"
它是Android的默认列表选择器颜色。您还可以通过创建自己的可绘制图形自定义颜色。大概是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/item_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/item_focused" android:state_focused="true" />
    <item android:drawable="@drawable/item_checked" android:state_checked="true" />
    <item android:drawable="@drawable/item_activated" android:state_selected="true" />
    <item android:drawable="@drawable/item_activated" android:state_activated="true" />
    <item android:drawable="@android:color/transparent" />
</selector>

如果希望突出显示为橙色,可以在线性布局中使用此选项

    android:background="@android:drawable/list_selector_background"
它是Android的默认列表选择器颜色。您还可以通过创建自己的可绘制图形自定义颜色。大概是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/item_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/item_focused" android:state_focused="true" />
    <item android:drawable="@drawable/item_checked" android:state_checked="true" />
    <item android:drawable="@drawable/item_activated" android:state_selected="true" />
    <item android:drawable="@drawable/item_activated" android:state_activated="true" />
    <item android:drawable="@android:color/transparent" />
</selector>

如果你有很多这样的线性布局,比如说有不同的背景色,你只想使用一个单一的选择器来处理所有这些布局的高光,你可以使用以下方法:

res/resources/dimens.xml

<resources>
    <color name="button_focused">#60ffffff</color>
</resources>

#60ffffff
res/drawable/button_selector.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@color/button_focused" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@android:color/transparent" /> <!-- focused -->
     <item android:drawable="@android:color/transparent" /> <!-- default -->
 </selector>

然后在布局中,使用框架布局将线性布局包裹起来,如下所示:

<FrameLayout
    android:layout_width="56dp"
    android:layout_height="56dp"
    android:foreground="@drawable/button_selector">

    <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:background="#F68D5D">
    </LinearLayout>                
</FrameLayout>    


这样做的一个缺点是在布局树中添加了另一层。

如果有很多这样的线性布局,比如说有不同的背景色,并且您只想使用一个单一的选择器来处理所有这些布局的高光,您可以使用以下方法:

res/resources/dimens.xml

<resources>
    <color name="button_focused">#60ffffff</color>
</resources>

#60ffffff
res/drawable/button_selector.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@color/button_focused" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@android:color/transparent" /> <!-- focused -->
     <item android:drawable="@android:color/transparent" /> <!-- default -->
 </selector>

然后在布局中,使用框架布局将线性布局包裹起来,如下所示:

<FrameLayout
    android:layout_width="56dp"
    android:layout_height="56dp"
    android:foreground="@drawable/button_selector">

    <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:background="#F68D5D">
    </LinearLayout>                
</FrameLayout>    

这样做的一个缺点是将另一层添加到布局树中