会不会觉得Android自带的菜单不好用?很多时候我们需要好看的设置菜单。在这里介绍一种经常用到的弹出菜单PopupMenu,它展开来是一行一行的选项,个人觉得美观又简洁。
首先在res文件夹下新建menu文件,新建main.xml
main.xml文件放的是你要展开的内容,这里简单列两项
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="哈哈"/>
<item
android:id="@+id/action_settings2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="帅不"/>
</menu>
Activity里面只有一个按钮,点击之后展开Menu,要继承OnMenuItemClickListener。下面是简单示例
public class MainActivity extends Activity implements OnMenuItemClickListener {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
showPopupMenu(btn);
}
});
}
@SuppressLint("NewApi")
private void showPopupMenu(View v) {
// TODO 自动生成的方法存根
PopupMenu pop = new PopupMenu(this, v);
pop.getMenuInflater().inflate(R.menu.main, pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem arg0) {
// TODO 自动生成的方法存根
switch (arg0.getItemId()) {
case R.id.action_settings:
showToast("哈哈");
break;
case R.id.action_settings2:
showToast("帅不");
break;
default:
break;
}
return false;
}
});
pop.show();
}
public void showToast(String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}