我在抽屉上看到可以看到点击效果的问题。
我的活动xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
如您所见,我将NavigationView
放入DrawerLayout
,然后使用菜单xml文件填充NavigationView
。
我的activity_main_drawer.xml
如下所示:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
>
<group>
<item
android:id="@+id/id1"
android:title="Item 1"/>
<item
android:id="@+id/id2"
android:title="Item 2"/>
<item
android:id="@+id/id3"
android:title="Item 3"/>
<item
android:id="@+id/id4"
android:title="Item 4"/>
</group>
不幸的是,当我这样做的时候,点击抽屉菜单中的项目后我没有任何视觉效果。我想要的是所谓的“涟漪效应”#34;。我该怎么办?
答案 0 :(得分:1)
我也遇到过这个问题
请删除此属性:
<强>可点击=真强>
<强> focusableOnTouch =真强>
然后应用涟漪效果XML
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@android:color/transparent"
tools:targetApi="lollipop"> <!-- ripple color -->
<item android:drawable="@android:color/transparent" /> <!-- normal color -->
我希望它能帮到你
答案 1 :(得分:1)
您可以将itemBackground
属性与?android:attr/selectableItemBackground
一起使用,以获取NavigationView
物品的涟漪效应
<android.support.design.widget.NavigationView
/* ... other attributes... */
app:itemBackground="?android:attr/selectableItemBackground"/>
答案 2 :(得分:0)
可以通过以下方式添加涟漪效应。
将itemBackground添加到xml文件中的NavigationView中,具有以下属性:
应用程式:itemBackground = “@绘制/ ripple_navigation_selector”
此外,在drawable-v21文件夹中,添加ripple_navigation_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripplecolor" >
<item android:drawable="@color/accentColor" />
<item
android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
答案 3 :(得分:0)
如果您使用的是appcompat,可以将其添加到导航抽屉项android:background="?attr/selectableItemBackground"
的XML中。
上述解决方案取自answer。
希望这会对你有所帮助。
答案 4 :(得分:0)
这可能是由于性能下降,尝试在onClick上做任何事情之前添加200-300ms的延迟。
public void itemClicked(MenuItem item) {
Handler theHandler = new Handler();
theHandler.postDelayed(new Runnable() {
@Override
public void run() {
//whatever you wish to do
}
}, 200);
}
不要担心这么多延迟对用户不可见,但会平滑地显示涟漪效应。