【发布时间】:2014-12-05 17:55:25
【问题描述】:
我正在开发一个在大型设备上使用双窗格布局的应用程序,类似于here 的详细说明。布局摘要;一个窗格包含选项列表,而另一个窗格将显示有关从另一个窗格中选择的选项的详细信息。
现在在选择一个选项时,存在在选择其他元素(按钮,复选框等)时看到的纹波效果,但动画完成元素后返回之前的颜色。我想在动画完成后保留涟漪中的高光,但我无法弄清楚如何实现这一点。
这就是我的波纹背景目前的样子。 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>
重申一下,我的问题是:是否有可能同时出现涟漪效应和突出显示的选择,如果可以,如何?
【问题讨论】:
-
一个 hacky 解决方案(我尝试过并且有效)是将您的项目背景设置为
selector,并使用您的波纹的默认项目(没有其选择器)和checked状态。然后,在点击时,postDelayed将您的视图状态设置为选中(您需要实现Checkable)。尝试不那么难的东西 - 因为RippleDrawable只是一个LayerDrawable,请尝试覆盖onStateChange以检测按下状态,然后(手动)将“内容”层的背景更改为其他内容,以便在动画完成时,您会看到选定的颜色。
标签: android android-5.0-lollipop android-recyclerview rippledrawable