PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,类似于actionbar溢出菜单的效果。它的菜单选项可以来自于menu资源,因此非常方便。
首先你得新建menu文件夹放你的menu资源(比如.xml)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/shitang1"
android:title="一食堂"/>
<item
android:id="@+id/shitang2"
android:title="二食堂"/>
<item
android:id="@+id/shitang3"
android:title="三食堂"/>
<item
android:id="@+id/shitang4"
android:title="四食堂"/>
<item
android:id="@+id/shitang5"
android:title="五食堂"/>
<item
android:id="@+id/shitang6"
android:title="六食堂"/>
</menu>
我需要达到的效果为:点击这个TextView(6食堂),可以切换显示不同食堂
private void showPopupMenu(View view) {
final TextView dinnerhall=(TextView)findViewById(R.id.b_layout_shitang_ad); //设定view
PopupMenu popupMenu = new PopupMenu(this, view); //初始化PopupMenu对象
popupMenu.getMenuInflater().inflate(R.menu.main, popupMenu.getMenu()); //和menu里面的main.xml相关联
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { //点击事件
@Override
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()){
case R.id.shitang1:
dinnerhall.setText(item.getTitle().toString());
case R.id.shitang2:
dinnerhall.setText(item.getTitle().toString());
case R.id.shitang3:
dinnerhall.setText(item.getTitle().toString());
case R.id.shitang4:
dinnerhall.setText(item.getTitle().toString());
case R.id.shitang5:
dinnerhall.setText(item.getTitle().toString());
case R.id.shitang6:
dinnerhall.setText(item.getTitle().toString());
default:
}
return true;
}
});
popupMenu.show();} //显示