2022年7月18日 星期一

Android Studio - Popup Menu 彈出式選單(八十八)

Android Studio - Popup Menu 彈出式選單(八十八):

PopupMenu(彈出式選單)是依賴 View 存在的模態菜單。如果顯示空間足夠,它將顯示在相應 View 的下方,否則顯示在其上方。PopupMenu 是固定在 View 上的模式選單,樣式確實和 PopupWindow 是一樣的。同時它也需要綁定到一個 View 上面,然後會以一個豎直列表的形式彈出一個懸浮窗,非常適合對 View 進行設置或者提供一些相關的附加選項。

Android Studio - Popup Menu(彈出式選單)

可以將彈出功能表的使用拆分為以下四個步驟:
  1. 產生實體 PopupMenu,它的構造方法需要兩個參數,分別為 Context以及PopupMenu 依賴的 View 物件。
  2. 使用 MenuInflater 將 Menu 資源載入到PopupMenu.getMenu() 返回的 Menu 對象中。
  3. 調用 setOnMenuItemClickListener 方法為 PopupMenu 設置點擊監聽器。
  4. 調用 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(彈出式選單)

2022年 7月 18日(Mon)天氣報告
氣溫:55.0°F / 13.0°C @ 07:00
風速:每小時 10公里
降雨機會:3%
相對濕度:百分之 87%
天氣:多雲

沒有留言:

張貼留言