在Android中添加子菜单的方法很简单,只要在设计菜单的时候给菜单的item增加menu子节点就可以,菜单设计文件的xml代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/get_image" android:title="添加照片" app:showAsAction="always"> <menu> <item android:id="@+id/from_camera" android:title="拍摄"></item> <item android:id="@+id/from_album" android:title="相册"> <menu> <item android:title="本地" android:id="@+id/from_local"></item> <item android:title="云盘" android:id="@+id/from_cloud"></item> </menu> </item> </menu> </item> </menu> |
在Activity中的响应代码和正常的菜单一样,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.bcoder.study.androidanimation; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; 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) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.from_cloud){ Toast.makeText(this, "从云盘获取图片...", Toast.LENGTH_LONG).show(); }else if (item.getItemId() == R.id.from_local){ Toast.makeText(this, "从本地获取图片...", Toast.LENGTH_LONG).show(); } return super.onOptionsItemSelected(item); } } |
这种下拉菜单的缺点就是子菜单的位置无法控制。