Android用純Java來實現選項菜單中菜單、子菜單的布局設計以及簡單交互功能
————安德風QQ1652102745
一、效果演示:
二、布局設計activity_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:background="@drawable/beijing" 8 tools:context=".MainActivity"> 9 10 <TextView 11 android:layout_width="267dp" 12 android:layout_height="47dp" 13 android:text="你好,安德風" 14 android:textColor="#FFFFFF" 15 android:textSize="34sp" 16 app:layout_constraintBottom_toBottomOf="parent" 17 app:layout_constraintLeft_toLeftOf="parent" 18 app:layout_constraintRight_toRightOf="parent" 19 app:layout_constraintTop_toTopOf="parent" /> 20 21 </androidx.constraintlayout.widget.ConstraintLayout>
三、功能實現MainActivity.java
1 package com.example.xzjhomework04; 2 3 import androidx.annotation.NonNull; 4 import androidx.appcompat.app.AppCompatActivity; 5 6 import android.annotation.SuppressLint; 7 import android.os.Bundle; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.SubMenu; 11 import android.widget.Toast; 12 13 public class MainActivity extends AppCompatActivity { 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 } 20 21 @Override 22 public boolean onCreateOptionsMenu(Menu menu) { 23 getMenuInflater().inflate(R.menu.optionmenu,menu); 24 25 //SubMenu方法的運用實現菜單與子菜單的建立 26 //添加菜單選項 27 SubMenu zcd1=menu.addSubMenu("菜單1");//添加菜單一 28 //添加子菜單選項 29 /* 30 * add方法的參數說明: 31 * 參數一:group ID(int) :組ID,用於標示該子選項屬於哪一個組 32 * 參數二:item ID(int) :子選項ID,用於標示該子選項 33 * 參數三:order ID(int): 顯示順序,用於標示該子選項顯示順序,默認為0,表示按添加順序顯示 34 * 參數四:title (String): 用於定義該子選項的顯示文字 35 * 36 * */ 37 38 zcd1.add(1,1,0,"子菜單1");//為菜單一添加子菜單1 39 zcd1.add(1,2,0,"子菜單2");//為菜單一添加子菜單2 40 zcd1.add(1,3,0,"子菜單3");//為菜單一添加子菜單3 41 zcd1.add(1,4,0,"子菜單4");//為菜單一添加子菜單4 42 SubMenu zcd2=menu.addSubMenu("菜單2");//添加菜單二 43 zcd2.add(2,1,0,"子菜單1");//為菜單二添加子菜單1 44 zcd2.add(2,2,0,"子菜單2");//為菜單二添加子菜單2 45 zcd2.add(2,3,0,"子菜單3");//為菜單二添加子菜單3 46 zcd2.add(2,4,0,"子菜單4");//為菜單二添加子菜單4 47 48 49 return true; 50 } 51 52 @SuppressLint("WrongConstant") 53 @Override 54 public boolean onOptionsItemSelected(@NonNull MenuItem item) { 55 String title="選擇了"+item.getTitle().toString(); 56 int itemId = item.getItemId(); 57 if(itemId!=0){ //如果不是父級菜單,即子菜單 58 String tstStr = "選中的是菜單" 59 +item.getGroupId()+"中的子菜單"+itemId; 60 Toast.makeText(this,tstStr,3000).show(); 61 } 62 return super.onOptionsItemSelected(item); 63 64 65 } 66 }
四、菜單布局文件optionmenu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> </menu>