通常 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(上下文選單) |
沒有留言:
張貼留言