PopupMenu(彈出式選單)是依賴 View 存在的模態菜單。如果顯示空間足夠,它將顯示在相應 View 的下方,否則顯示在其上方。PopupMenu 是固定在 View 上的模式選單,樣式確實和 PopupWindow 是一樣的。同時它也需要綁定到一個 View 上面,然後會以一個豎直列表的形式彈出一個懸浮窗,非常適合對 View 進行設置或者提供一些相關的附加選項。
Android Studio - Popup Menu(彈出式選單) |
可以將彈出功能表的使用拆分為以下四個步驟:
- 產生實體 PopupMenu,它的構造方法需要兩個參數,分別為 Context以及PopupMenu 依賴的 View 物件。
- 使用 MenuInflater 將 Menu 資源載入到PopupMenu.getMenu() 返回的 Menu 對象中。
- 調用 setOnMenuItemClickListener 方法為 PopupMenu 設置點擊監聽器。
- 調用 PopupMenu.show() 將彈出功能表顯示出來。
- 操作系統:Windows 7 64-bit 版本
- 開發環境:Android Studio 4.0.1 版本
- Gradle 版本:6.1.1
- 手機測試版本:API 19
- 原程式:C:\DIY-Android-181-15 PopupMenu bugworkshop
- 程式:C:\DIY-Android-181-15 PopupMenu bugworkshop
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" >
<Button android:id="@+id/btn_popup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pop" android:text="Popup Menu" /> </LinearLayout> |
options_menu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/setting" android:title="Setting" /> <item android:id="@+id/about" android:title="About" /> </menu> |
MainActivity.java:
package bugworkshop.popupmenu;
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import androidx.appcompat.widget.PopupMenu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
final Button btn_pop = (Button)findViewById(R.id.btn_popup);
btn_pop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PopupMenu popup = new PopupMenu(MainActivity.this,btn_pop); popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { String info = ""; switch (item.getItemId()){ case R.id.setting: info = "Popup Menu Settings"; break; case R.id.about: info = "Popup Menu About"; break; } Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show(); return true; } }); popup.show(); } }); } } |
Android Studio - Popup Menu(彈出式選單) |
沒有留言:
張貼留言