Android学习-实现处理菜单和子菜单的点击事件
今天学习了一下子菜单的做法,主要是重写这两个方法实现,效果见下图,很简单很基础
onCreateOptionsMenu
onOptionsItemSelected
代码
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="listview效果" android:id="@+id/list_view"> <menu> <item android:id="@+id/list_view_vertical_stander" android:title="垂直标准" ></item> <item android:id="@+id/list_view_vertical_reverse" android:title="垂直反向" ></item> <item android:id="@+id/list_view_horizontal_stander" android:title="水平标准" ></item> <item android:id="@+id/list_view_horizontal_reverse" android:title="水平反向" ></item> </menu> </item> <item android:title="gridview效果" android:id="@+id/grid_view"> <menu> <item android:id="@+id/grid_view_vertical_stander" android:title="垂直标准" ></item> <item android:id="@+id/grid_view_vertical_reverse" android:title="垂直反向" ></item> <item android:id="@+id/grid_view_horizontal_stander" android:title="水平标准" ></item> <item android:id="@+id/grid_view_horizontal_reverse" android:title="水平反向" ></item> </menu> </item> <item android:title="瀑布流效果" android:id="@+id/stagger_view"> <menu> <item android:id="@+id/stagger_view_vertical_stander" android:title="垂直标准" ></item> <item android:id="@+id/stagger_view_vertical_reverse" android:title="垂直反向" ></item> <item android:id="@+id/stagger_view_horizontal_stander" android:title="水平标准" ></item> <item android:id="@+id/stagger_view_horizontal_reverse" android:title="水平反向" ></item> </menu> </item> </menu>
package com.example.recyclertest; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { //菜单的方法 //ctrl+p看方法参数 getMenuInflater().inflate(R.menu.menu,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { //子菜单 switch (item.getItemId()){ //listview case R.id.list_view_vertical_stander: Toast.makeText(this, "点击list,垂直标准", Toast.LENGTH_SHORT).show(); break; case R.id.list_view_vertical_reverse: Toast.makeText(this, "点击list,垂直反向", Toast.LENGTH_SHORT).show(); break; case R.id.list_view_horizontal_stander: Toast.makeText(this, "点击list,水平标准", Toast.LENGTH_SHORT).show(); break; case R.id.list_view_horizontal_reverse: Toast.makeText(this, "点击list,水平反向", Toast.LENGTH_SHORT).show(); break; //gridview case R.id.grid_view_vertical_stander: Toast.makeText(this, "点击grid,垂直标准", Toast.LENGTH_SHORT).show(); break; case R.id.grid_view_vertical_reverse: Toast.makeText(this, "点击grid,垂直反向", Toast.LENGTH_SHORT).show(); break; case R.id.grid_view_horizontal_stander: Toast.makeText(this, "点击grid,水平标准", Toast.LENGTH_SHORT).show(); break; case R.id.grid_view_horizontal_reverse: Toast.makeText(this, "点击grid,水平反向", Toast.LENGTH_SHORT).show(); break; //staggerview case R.id.stagger_view_vertical_stander: Toast.makeText(this, "点击stagger,垂直标准", Toast.LENGTH_SHORT).show(); break; case R.id.stagger_view_vertical_reverse: Toast.makeText(this, "点击stagger,垂直反向", Toast.LENGTH_SHORT).show(); break; case R.id.stagger_view_horizontal_stander: Toast.makeText(this, "点击stagger,水平标准", Toast.LENGTH_SHORT).show(); break; case R.id.stagger_view_horizontal_reverse: Toast.makeText(this, "点击stagger,水平反向", Toast.LENGTH_SHORT).show(); break; } return super.onOptionsItemSelected(item); } }