首頁 > 軟體

Android學習之選單的使用方法

2022-09-20 22:03:03

本文範例為大家分享了Android學習之選單使用的具體程式碼,供大家參考,具體內容如下

Android中選單包含上下文選單和選項選單兩種型別。

使用統一的選單類來管理選單:

Menu、MenuItem、SubMenu三個類。

1.Menu類:

一個Menu物件代表一個選單,是整個選單的基礎。
Menu類的常用方法:新增一個選單:add(int groupId, int itemId, int order, CharSequence title)

2.MenuItem類:

MenuItem代表一個選單項;
MenuItem往往是通過Menu的add方法來獲取的。

3.subMenu類:

subMenu繼承自Menu,其代表一個子選單。

Menu、MenuItem、SubMenu的使用:
Menu通過add方法,來新增選單項MenuItem並返回;
Menu通過addSubMenu方法,來新增自選單SubMenu並返回;
通過MenuItem的多個方法,來設定選單項的狀態;
SubMenu繼承自Menu,用相同方法,新增MenuItem及SubMenu;
通過SubMenu的多個方法,設定SubMenu的狀態。

1.ContextMenu(上下文選單):

ContextMenu(上下文選單)類似於PC中的右鍵彈出選單,當一個檢視註冊了上下文選單時,長按該檢視物件將出現一個提供相關功能的浮動選單。上下文選單可以被註冊到任何檢視物件中,最常見的是用於列表檢視ListView中,但上下文選單不支援圖示和快捷鍵。

使用步驟如下:

(1)在Activity中使用上下文選單,複寫onCreateContextMenu() 和 onContextItemSelected()方法;
(2)為檢視控制元件View中註冊上下文選單,使用registerForContextMenu()方法;
(3)在onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)中新增選單項menu.add();
(4)在onContextItemSelected()中通過設定選單的id來實現選單子項的監聽。

ContextMenu在Activity中的回撥函數:

onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)
//初始化,第一次呼叫選單時執行,用於建立選單專案
onContextItemSelected(MenuItem item)
//選單項被選中後呼叫,用於處理選單事件,根據傳遞的item引數,確定具體的選單項,進行設計
onContextMenuClosed(Menu menu) //選單被關閉時呼叫
``

2.OptionsMenu(選項選單):

使用步驟如下:

(1)在Activity中複寫onCreateOptionsMenu()和onOptionsItemSelected()方法;

(2)在onCreateOptionsMenu(Menu menu)中新增選單選項,有兩種方式:

a、呼叫menu.add()
b、從佈局檔案中新增,在res下新建menu資料夾,建立menu檔案,填寫相應的選項;

(2)為檢視控制元件View中註冊上下文選單,使用registerForContextMenu()方法;

OptionsMenu選項選單在Activity中的回撥方法:

onCreateOptionsMenu(Menu menu) 
//初始化選項選單,初次顯示選單時呼叫
public boolean onOptionsItemSeleted(MenuItem item)
//選項選單中的某個選項被選中時,呼叫該方法
public void onOptionMenuClosed(Menu menu)
//當關閉選單時呼叫該方法

☆☆☆Android Studio實現使用選單的使用

1.開啟Android Studio,新建工程後,在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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.androidlesson.MainActivity"
    android:background="@android:color/holo_blue_dark">
    
    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/textView"
        android:background="@android:color/holo_green_dark"
        android:textSize="36sp" />
        
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:id="@+id/imageView"
        android:background="@android:color/holo_purple"
        android:layout_below="@+id/textView"
        android:layout_alignParentStart="true"
        android:layout_marginTop="14dp" />
        
</RelativeLayout>

2.在MainActivity.java中,編寫相關程式碼。

package com.example.menu;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    TextView tv;
    ImageView iv;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv= (TextView) findViewById(R.id.textView);
        iv= (ImageView) findViewById(R.id.imageView);
        registerForContextMenu(tv);
        registerForContextMenu(iv);
    }
    
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        if (v.getId()==tv.getId()) {
            //menu.add(0,0,0,"開啟");
            menu.add(0, 0, 0, "大號字型");
            //menu.add(0,1,1,"儲存");
            menu.add(0, 1, 1, "小號字型");
            //SubMenu sm1=menu.addSubMenu(0,2,2,"編輯");
            SubMenu sm1 = menu.addSubMenu(0, 2, 2, "顏色");
            //sm1.add(0,3,3,"複製");
            //sm1.add(0,4,4,"貼上");
            sm1.add(0, 3, 3, "黑色");
            sm1.add(0, 4, 4, "紅色");
        }else {
            menu.add(1,5,5,"圖片資訊");
            menu.add(1,6,6,"圖片說明");
        }
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 0:
                tv.setTextSize(32);
                break;
            case 1:
                tv.setTextSize(16);
                break;
            case 3:
                tv.setTextColor(Color.BLACK);
                break;
            case 4:
                tv.setTextColor(Color.RED);
                break;
            case 5:
                Toast.makeText(this,"png格式圖片,解析度64",Toast.LENGTH_LONG).show();
                break;
            case 6:
                Toast.makeText(this,"這是安卓機器人的圖片",Toast.LENGTH_LONG).show();
        }
        return super.onContextItemSelected(item);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        SubMenu sub1=menu.addSubMenu(0,0,0,"檔案");
        SubMenu sub2=menu.addSubMenu(0,1,1,"編輯");
        sub1.add(0,2,2,"開啟");
        sub1.add(0,3,3,"儲存");
        sub1.add(0,4,4,"另存為");
        sub2.add(0,5,5,"複製");
        sub2.add(0,6,6,"貼上");
        menu.add(0,7,7,"退出");
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 7:
                finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

執行結果:

這就是選單的簡單使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com