Android上下文選單及示例


什麼是 Android 中的上下文選單?

在本教程中,我們將學習如何使用 Kotlin 作為程式語言,在我們的 Android 應用程式中顯示上下文選單。

什麼是 Android 中的上下文選單?

上下文選單是一個簡短的浮動選單選項,當用戶長按移動應用程式上的特定小部件時出現。此選單就像 Windows 中的右鍵單擊選項,用於在 Android 應用程式中對特定小部件執行一些快速操作。

上下文選單的實現

我們將建立一個簡單的應用程式,用於在 Android 應用程式中顯示上下文選單。我們將遵循分步指南在 Android 應用程式中實現上下文選單。

步驟 1:在 Android Studio 中建立新專案

導航到 Android Studio,如下面的螢幕所示。在下面的螢幕中,單擊“新建專案”以建立新的 Android Studio 專案。

單擊“新建專案”後,您將看到下面的螢幕。

在此螢幕中,我們只需選擇“空活動”並單擊“下一步”。單擊“下一步”後,您將看到下面的螢幕。

在此螢幕中,我們只需指定專案名稱。然後包名將自動生成。

注意 - 請確保將語言選擇為 Kotlin。

指定所有詳細資訊後,單擊“完成”以建立新的 Android Studio 專案。

建立專案後,我們將看到兩個開啟的檔案,即 activity_main.xml 和 MainActivity.kt 檔案。

步驟 2:使用 activity_main.xml

導航到 activity_main.xml。如果此檔案不可見,則要開啟此檔案。在左側窗格中,導航到 app > res > layout > activity_main.xml 以開啟此檔案。開啟此檔案後,將以下程式碼新增到其中。程式碼中添加了註釋以詳細瞭解。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
   tools:context=".MainActivity">

   <!-- creating text view for displaying heading-->
   <TextView
      android:id="@+id/idTVHeading"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_above="@id/idTVMessage"
      android:layout_marginStart="20dp"
      android:layout_marginTop="20dp"
      android:layout_marginEnd="20dp"
      android:layout_marginBottom="20dp"
      android:gravity="center"
      android:text="Context Menu in Android"
      android:textAlignment="center"
      android:textAllCaps="false"
      android:textColor="#FF000000"
      android:textSize="20sp"
      android:textStyle="bold" />

   <!-- text view for displaying the selected menu item-->
   <TextView
      android:id="@+id/idTVMessage"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:layout_margin="20dp"
      android:gravity="center"
      android:text="Message"
      android:textAlignment="center"
      android:textAllCaps="false"
      android:textColor="#FF000000"
      android:textSize="20sp"
      android:textStyle="bold" />

</RelativeLayout>

說明 - 在上面的程式碼中,根元素是 Android 中的相對佈局。此佈局是一個檢視組,用於相對於彼此對齊其中的所有元素。藉助 ID 或位置,我們可以使用相對佈局相對對齊其中的所有元素。

在此相對佈局中,我們建立的第一個檢視是 TextView。它用於顯示簡單的文字訊息。在此 TextView 小部件中,我們將其寬度指定為 match_parent,以便它將佔用移動裝置的完整寬度,並將高度指定為 wrap_content 以佔用文字高度。我們正在為 TextView 指定 ID,它是該小部件的唯一識別符號。我們可以使用此 ID 對 TextView 執行一些操作,例如覆蓋新的文字。之後,我們添加了 layout_center_in_parent。該引數將 TextView 小部件對齊到螢幕的中心。之後,我們添加了一個名為 gravity 的引數,該引數再次將 TextView 小部件內的文字居中對齊。之後,我們添加了一個名為 text 的引數,在其中我們將指定必須在 TextView 中顯示的值。指定文字後,我們指定文字對齊方式。這會將 TextView 小部件內的文字對齊到小部件的中心。之後,我們指定 textAllCaps,它將為文字新增與我們在 TextView 中指定值時相同的格式。之後,我們為專案中的文字指定顏色。最後,我們指定文字大小併為文字新增粗體樣式。

在此 TextView 之後,我們建立了另一個 TextView,我們將在其中顯示使用者從上下文選單中選擇的選單選項。

最後,我們為 RelativeLayout 新增一個結束標籤,因為 TextView 和 Button 都包含在我們的 RelativeLayout 中。

步驟 3:使用 MainActivity.kt

導航到 MainActivity.kt。如果此檔案不可見,則要開啟此檔案。在左側窗格中,導航到 app > java > 您的應用程式的包名 > MainActivity.kt 以開啟此檔案。開啟此檔案後,將以下程式碼新增到其中。程式碼中添加了註釋以詳細瞭解。

package com.example.gptapp

import android.os.Bundle
import android.view.ContextMenu
import android.view.MenuItem
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

   // creating variables for video view on below line.
   lateinit var messageTV: TextView

   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      // initializing variable for video view on below line.
      messageTV = findViewById(R.id.idTVMessage)
      // registering context menu on below line.
      registerForContextMenu(messageTV)
   }

   override fun onCreateContextMenu(
      menu: ContextMenu?,
      v: View?,
      menuInfo: ContextMenu.ContextMenuInfo?
   ) {
      super.onCreateContextMenu(menu, v, menuInfo)
      // on below line we are setting header title for menu.
      menu!!.setHeaderTitle("Choose Programming Language")
      // on below line we are adding menu items
      menu.add(0, v!!.getId(), 0, "Java")
      menu.add(0, v!!.getId(), 0, "Kotlin")
      menu.add(0, v!!.getId(), 0, "Dart")
   }

   override fun onContextItemSelected(item: MenuItem): Boolean {
      // on below line we are setting the selected item text for message text view
      messageTV.text = item.title
      return true
   }
} 

說明 - 在上面針對 MainActivity.kt 檔案的程式碼中。首先,我們為 TextView 建立一個變數,我們將在其中顯示從上下文選單中選擇的專案。

建立變數後,我們使用在 activity_main.xml 檔案中給出的唯一 ID 初始化名為 messageTV 的 TextView 變數。

初始化 TextView 後,我們在 TextView 上註冊上下文選單。我們將其傳遞給 message TextView,因為我們必須在 message TextView 上顯示上下文選單。

現在,我們將建立一個名為 onCreateContextMenu 的方法,該方法用於建立選單。在此方法中,我們將首先使用 setHeaderTitle 方法設定選單的標題,然後使用 add 方法向其中新增選單項。在此方法中,我們將新增必須在上下文選單中顯示的專案。

然後,我們將建立一個名為 onContextItemSelected 的方法。當用戶單擊使用者選擇的任何上下文專案時,將使用此方法。在此方法中,我們將簡單地將 message TextView 的文字設定為專案的標題,並將其簡單地返回為 true。

新增上述程式碼後,現在只需單擊頂欄中的綠色圖示即可在移動裝置上執行我們的應用程式。

注意 - 請確保已連線到您的真實裝置或模擬器。

結論

在以上教程中,我們學習了什麼是 Android 中的上下文選單以及如何使用它在我們的 Android 應用程式中顯示簡短選單。我們學習瞭如何在我們的 Android 應用程式中建立此上下文選單並使用它在應用程式中顯示浮動選單選項。

更新於:2023 年 3 月 14 日

3K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告