有这么一个需求,在listview或者recyclerview添加menu,效果图如下:
image.png实现右边三个点的效果有2中方法:
1、image
2、通过系统自带的style
第一种方式不再介绍。
第二种方式:
<ImageView
android:id="@+id/action"
style="@style/Widget.AppCompat.ActionButton.Overflow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:theme="?ItemPopupMenuStyle"
/>
核心代码style="@style/Widget.AppCompat.ActionButton.Overflow"
这样做的好处是,第一省去图片资源,第二是自带系统的一些效果,比如单击波纹。
android:theme="?ItemPopupMenuStyle"
是设置改图标的的样式,一般@style/Widget.AppCompat.PopupMenu
即可。
PopupMenu
效果图:
image.png基本用法
private void showPopMenu(View v) {
mPopupMenu=new PopupMenu(getContext(),v);
mPopupMenu.inflate(R.menu.menu_music_list_item_action_fragment);
mPopupMenu.show();
}
参数View v
是指刚才创建的imageview。
inflate
指定显示的menu。
修改popmenu的背景颜色和字体颜色
1、在style.xml文件里
<item name="popupMenuStyle">@style/NightAppTheme.popMenuStyle</item>
<item name="textAppearanceLargePopupMenu">@style/NightAppTheme.popMenuStyle.textAppearanceLargePopupMenu</item>
<item name="textAppearanceSmallPopupMenu">@style/NightAppTheme.popMenuStyle.textAppearanceSmallPopupMenu</item>
<style name="NightAppTheme.popMenuStyle" parent="@style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">@drawable/popup_background_material</item>
</style>
<style name="NightAppTheme.popMenuStyle.textAppearanceLargePopupMenu" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large">
<item name="android:textColor">?secondary_text_color</item>
</style>
<style name="NightAppTheme.popMenuStyle.textAppearanceSmallPopupMenu" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
<item name="android:textColor">?secondary_text_color</item>
</style>
通过 popupMenuStyle
设置背景颜色。
通过textAppearanceLargePopupMenu
、textAppearanceSmallPopupMenu
设置字体颜色。
网友评论