我有一个RelativeLayout
<Window.Resources>
<sys:String x:Key="strHelloWorld">Hello, world!</sys:String>
</Window.Resources>
我定义了一个选择器
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:background="@drawable/animated_bg">
但是当我按下布局时,它不会改变颜色。
任何人都可以注意到为什么会这样?
更新
这是完整的xml文件
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple_color">
<item>
<selector>
<item android:state_pressed="true"
android:drawable="@color/grey_1" />
<item android:state_focused="true"
android:drawable="@color/grey_1" />
<item android:drawable="@color/white" />
</selector>
</item>
答案 0 :(得分:2)
我已经使用选择器测试了你的布局。它运作良好。但是,我不知道你的相对布局中是否有任何其他视图/布局?如果RelativeLayout
有子视图。这些视图可能会消耗您的事件press
,导致背景不会改变其颜色。在我的测试中,我的相对布局中没有任何子视图。你能发布整个布局文件吗?
更新:
如果您的子视图不需要处理click事件,您可以设置android:clickable="false"
,以便将click事件传递给您的父相对布局。如果不是这样,那么link可能对您有所帮助。
答案 1 :(得分:0)
在你的xml选择器颜色为android:state_pressed android:state_focused是相同的:@ color / grey_1。尝试为两者提供不同的颜色。
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple_color">
<item>
<selector>
<item android:state_pressed="true"
android:drawable="@color/grey_1" />
<item android:state_focused="true"
android:drawable="@color/grey_1" />
<item android:drawable="@color/white" />
</selector>
</item>