Android PopupMenu 弹出菜单
PopupMenu (弹出菜单) 是 一个类似于 PopupWindow 的东东,可以很方便的在指定 View 下显示一个弹出菜单,而且菜单选项可以来自于 Menu
资源
PopupMenu (弹出菜单)
创建一个 PopupMenu
可以通过实例化 PopupMenu
来实现
PopupMenu(Context context, View anchor) PopupMenu(Context context, View anchor, int gravity) PopupMenu(Context context, View anchor, int gravity, int popupStyleAttr, int popupStyleRes)
然后通过 getMenu()
方法获得 Menu
,设置完目录后调用 show()
方法显示出来
范例
废话不多说了,直接上最后的效果图
-
创建一个 空的 Android 项目
cn.twle.android.SubMenu
-
修改
activity_main.xml
添加一个 按钮 ( Button )<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <Button android:id="@+id/btn_pop" android:text="弹出菜单" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
-
在
res
目录下新建一个资源目录menu
,然后在res/menu
目录下新建文件menu_pop.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/saosao" android:title="扫一扫" /> <item android:id="@+id/add" android:title="添加" /> </menu>
-
直接修改 MainActivity.java
package cn.twle.android.popupmenu; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.MenuItem; import android.widget.PopupMenu; import android.widget.Toast; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button btn_pop = (Button)findViewById(R.id.btn_pop); btn_pop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PopupMenu popup = new PopupMenu(MainActivity.this,btn_pop); popup.getMenuInflater().inflate(R.menu.menu_pop, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { String info = ""; switch (item.getItemId()){ case R.id.saosao: info = "你点了扫一扫"; break; case R.id.add: info = "你点了添加"; break; } Toast.makeText(MainActivity.this,info, Toast.LENGTH_LONG).show(); return true; } }); popup.show(); } }); } }