Android用纯Java来实现选项菜单中菜单、子菜单的布局设计以及简单交互功能
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>