我正在开发一款应用程序,该应用在大屏设备上使用双面板布局,类似于这里所详细介绍的内容。布局概述:一个面板包含选项列表,而另一个面板将显示从其他面板中选择的选项的详细信息。
目前,在选择选项时,会看到类似于选择其他元素(按钮、复选框等)时看到的涟漪效果,但是动画完成后,元素会返回其先前的颜色。我希望在动画完成后保留来自涟漪的高亮显示,并且我无法弄清如何实现这一点。
这是我的涟漪背景目前的样子。
再次强调,我的问题是:在点击时同时出现波纹效果和高亮选择效果,是否可能?如果可能,应该如何实现?
目前,在选择选项时,会看到类似于选择其他元素(按钮、复选框等)时看到的涟漪效果,但是动画完成后,元素会返回其先前的颜色。我希望在动画完成后保留来自涟漪的高亮显示,并且我无法弄清如何实现这一点。
这是我的涟漪背景目前的样子。
focus
选择器无效 - 找不出如何实际给元素焦点。 我还尝试使用 selected
选择器,但那会立即发生,覆盖了涟漪效果。<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorAccent">
<item android:id="@android:id/mask"
android:drawable="@android:color/black" />
<item>
<selector>
<item android:state_focused="true"
android:drawable="@color/accent" />
</selector>
</item>
</ripple>
再次强调,我的问题是:在点击时同时出现波纹效果和高亮选择效果,是否可能?如果可能,应该如何实现?
postDelayed
将您的视图状态设置为已选中(您需要实现Checkable
)。尝试一些不那么hacky的方法 - 由于RippleDrawable
只是一个LayerDrawable
,因此尝试覆盖onStateChange
以检测按下状态,然后手动更改“content”图层的背景,以便在动画完成时看到所选颜色。 - ahmedre