自定义导航抽屉的涟漪效果

8
我正在开发我的第一个应用程序,为其提供新的材质外观。由于我对此有些迷茫,因此我正在按照一些教程实现工具栏、导航抽屉等功能。我必须说,我正在提供对预-Lollipop Android版本的兼容性,因此我正在使用支持库。
至于我的问题,我刚刚按照其中一个教程实现了导航抽屉,并使用以下库来提供兼容性:
support.v4.widget.DrawerLayout
support.v7.widget.RecyclerView

我认为代码实现太长了,无法在此处展示,所以我会提供这个教程的链接,我已经按照这里所说的完全做了。
我的问题是,当我从导航抽屉的行中选择一个项目时,它完美地打开了相应的片段,但是,在触摸时它不显示任何涟漪效果,或者只是任何触摸效果。像这样: enter image description here 我看了一些其他的教程,例如,附带的gif所属的教程,看看他们是否使用任何方法或实现来提供那种触摸效果,但是没有实现获得该效果,只有onclick方法。
那么,这段代码有什么问题,我该如何修改它,或者我可以添加什么来获得该效果?

你在测试哪个设备?我一直为Lollipop设备专门设计具有涟漪效果的可绘制对象,同时为旧版本保留了旧的“Selector”实现。你是在测试一个早于Lollipop的设备吗? - SlashG
@SlashG 我正在测试 KitKat 和 5.0 及以上版本的设备。 - masmic
你是否在 drawable/values-v21/style.xml 中指定了你的应用程序的 Material 主题? - SlashG
@SlashG 不,因为我正在遵循兼容性模式,所以我必须使用AppCompat样式,并且我已按照教程中所说的方式对应用程序进行了样式设计。 - masmic
对我来说,涟漪效果只适用于 Material 设计。我不确定 AppCompat 库是否支持它。如果你认为 AppCompat 中有 Ripple 效果,可以尝试更新你的 Support Library 并重新导入它。否则,你可以通过定义特定的样式,仅在 Lollipop 版本上实现涟漪效果。 - SlashG
1个回答

13

由于你使用的是appcompat,因此可以将以下内容添加到导航抽屉项目的XML中:android:background="?attr/selectableItemBackground"

这将在Lollipop设备上提供波纹效果,并为旧设备提供灰色高亮的回退效果。


完美,这正是我所需要的! - masmic
你需要在 styles.xml 中添加以下代码 <item name="colorControlHighlight">@color/ruler</item>并将其应用于 AppTheme.NoActionBar 以便在抽屉菜单项被触摸时显示你喜欢的颜色。 - Asha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接