1

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

我怎样才能让它突出显示?

4

2 回答 2

4

如果您希望突出显示为橙色,您可以在 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>
于 2013-11-13T13:59:02.000 回答
1

如果你有很多这样的线性布局,假设有不同的背景颜色,并且你只想使用一个选择器来处理所有它们的突出显示,你可以使用以下方法:

资源/资源/dimens.xml

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

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 包装您的 LinearLayout,如下所示:

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

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

于 2015-02-05T19:59:41.053 回答