Android PopupMenu基礎用法
有這麼一個需求,在listview或者recyclerview新增menu,效果圖如下:
實現右邊三個點的效果有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
效果圖:
基本用法
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
設定字型顏色。
相關文章
- SqlSugar基礎用法SqlSugar
- print基礎用法
- ES 基礎用法
- JSTL基礎用法JS
- Promise基礎用法Promise
- Promise 基礎用法Promise
- dos-基礎用法
- git 基礎用法梳理Git
- nodeJS基礎 Stream用法NodeJS
- Linux——基礎命令用法(上)Linux
- Linux——基礎命令用法(下)Linux
- css的基礎用法(下)CSS
- Redux 入門 -- 基礎用法Redux
- Android基礎—FragmentAndroidFragment
- 060、Vue3+TypeScript基礎,插槽的基礎用法VueTypeScript
- Redis基礎——剖析基礎資料結構及其用法Redis資料結構
- Elaticsearch(一)--基礎原理及用法
- SpringDataMongo連線MongoDB基礎用法SpringMongoDB
- JavaScript:async/await的基礎用法JavaScriptAI
- android基礎學習-android篇day12-android的UI基礎入門AndroidUI
- Android基礎知識Android
- Android 基礎之 HandlerAndroid
- Android 繪圖基礎Android繪圖
- Laravel-excel3.1最基礎用法LaravelExcel
- 教程:Laravel 集合(Collection)的基礎用法Laravel
- Java基礎知識整理之this用法Java
- Android基礎-Activity基本使用Android
- Android 面試基礎篇Android面試
- Python pip(管理模組工具)基礎用法Python
- go語言基礎之——iota的用法Go
- 【css基礎】如何理解transform的matrix()用法CSSORM
- Numpy基本用法(很基礎的點哦)
- Go基礎系列:雙層channel用法示例Go
- node基礎(4)---Stream的用法詳解
- android基礎學習-android篇day12-UI基礎控制元件(上)AndroidUI控制元件
- android基礎學習-android篇day13-UI基礎控制元件(下)AndroidUI控制元件
- Android 自定義View基礎(一)AndroidView
- android混淆總結(基礎版)Android
- Android基礎知識學習Android