2022年7月15日 星期五

Android Studio - ContextMenu 上下文選單(八十七)

Android Studio - ContextMenu 上下文選單(八十七):

通常 ContextMenu(上下文選單)是以浮動選單的形式呈現的,用戶長按(按住)一個支援上下文選單的 View 時,選單將以浮動清單的形式出現(類似於對話方塊)。通常用戶一次可對一個專案執行上下文操作(比如一個單獨的控制項或清單中的一項)。

Android Studio ContextMenu(上下文選單)
  • 操作系統:Windows 7 64-bit 版本
  • 開發環境:Android Studio 4.0.1 版本
  • Gradle 版本:6.1.1
  • 手機測試版本:API 19
  • 原程式:C:\DIY-Android-181-14 ContextMenu bugworkshop
  • 程式:C:\DIY-Android-181-14 ContextMenu bugworkshop

Android ContextMenu 上下文選單是在長按某個 View 後出現的功能表,我們需要為這個 View 註冊上下文功能表。提供上下文內容選單是呼叫 registerForContextMenu() 並將其傳遞到 View,以註冊與內容選單相關的 View。當註冊的檢視畫面收到長按事件時,系統會呼叫 onCreateContextMenu() 方法。您可以在此定義選單項目,作法通常為加載一個選單資源。

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

    <Button

        android:id="@+id/btn_contextmenu"

        android:text="Press Context Menu"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

</LinearLayout>


context_menu.xml:

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

        <group android:checkableBehavior="none">

            <item android:id="@+id/create"

                android:title="Create" />

            <item android:id="@+id/edit"

                android:title="Edit" />

        </group>

        <group android:checkableBehavior="single">

            <item android:id="@+id/save"

                android:title="Save" />

            <item android:id="@+id/save_as"

                android:title="Save As" />

            <item android:id="@+id/help"

                android:title="Help" />

        </group>

</menu>


MainActivity.java:

package bugworkshop.contextmenu;

 

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.ContextMenu;

 

import android.widget.Toast;

import android.widget.Button;

 

public class MainActivity extends AppCompatActivity {

 

    final private int OPEN = 111;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        Button btn_pop = (Button)findViewById(R.id.btn_contextmenu);

 

        registerForContextMenu(btn_pop);

 

    }

 

    @Override

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

 

        MenuInflater inflator = new MenuInflater(this);

        inflator.inflate(R.menu.context_menu, menu);

        menu.add(1,OPEN,1,"Open");

        super.onCreateContextMenu(menu, v, menuInfo);

    }

 

    @Override

    public boolean onContextItemSelected(MenuItem item) {

        int id = item.getItemId();

        String label = "";

 

        switch (id){

            case R.id.create:

                label = "Create";

                break;

            case OPEN:

                label = "Open";

                break;

            case R.id.help:

                label = "Help";

                break;

        }

 

        Toast.makeText(getApplicationContext(),"Menu Select:" + label,Toast.LENGTH_SHORT).show();

 

        return super.onContextItemSelected(item);

    }

}


Android Studio ContextMenu(上下文選單)

2022年 7月 15日(Fri)天氣報告
氣溫:55.0°F / 13.0°C @ 07:00
風速:每小時 11公里
降雨機會:2%
相對濕度:百分之 81%
天氣:晴

沒有留言:

張貼留言