Android PopupMenu基礎用法

weixin_34378969發表於2017-05-09

有這麼一個需求,在listview或者recyclerview新增menu,效果圖如下:

2379788-e70c4efff542f171.png
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

效果圖:

2379788-1b4765d91373d0d3.png
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設定背景顏色。
通過textAppearanceLargePopupMenutextAppearanceSmallPopupMenu設定字型顏色。

相關文章