简介:

PopupMenu 代表弹出式菜单,它会在指定组件上,默认情况下,PopupMenu会显示该组件,PopupMenu可增加多个菜单项。

实际效果:

\"\"


具体实现部分:

首先是主活动中的调用:

public class MainActivity extends Activity {
    PopupMenu popupMenu = null ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onPopupButt (View button){
        //创建PopupMenu对象
        popupMenu = new PopupMenu(this, button);
        //将 R.menu.menu_main 菜单资源加载到popup中
        getMenuInflater().inflate(R.menu.menu_main,popupMenu.getMenu());
        //为popupMenu选项添加监听器
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.plain_item:
                        //隐藏对话框
                        popupMenu.dismiss();
                        break;
                    default:
                        Toast.makeText(MainActivity.this,\"you clicked->\" + item.get (), Toast.LENGTH_SHORT).show();
                }
                return true;
            }
        });
        popupMenu.show();
    }

}

在布局文件中添加点击事件:

<?  version=\"1.0\" encoding=\"utf-8\"?>
<android.support.constraint.ConstraintLayout
     ns:android=\"http://schemas.android.com/apk/res/android\"
     ns:tools=\"http://schemas.android.com/tools\"
     ns:app=\"http://schemas.android.com/apk/res-auto\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\"
    tools:context=\".MainActivity\">

    <TextView
        android:id=\"@+id/txt\"
        android:layout_width=\"match_parent\"
        android:layout_height=\"wrap_content\"
        android: =\"onPopupButt \"
        android:text=\"click here to text PopupMenu\"
        android:textSize=\"25dp\"/>

</android.support.constraint.ConstraintLayout>

菜单的布局文件:

一、在 /res 下建立 /menu文件夹

二、在menu文件夹下建立:menu_main. :

 

<?  version=\"1.0\" encoding=\"utf-8\"?>
<menu  ns:android=\"http://schemas.android.com/apk/res/android\">
    <item android: =\"@string/app_name\"
        android:icon=\"@drawable/seek02\">
        <menu>
            <!--定义一组选项菜单-->
            <group android:checkableBehavior=\"single\">
                <!--定义多个菜单项-->
                <item
                    android:id=\"@+id/font_10\"
                    android: =\"font_10\"/>
                <item
                    android:id=\"@+id/font_12\"
                    android: =\"font_12\"/>
                <item
                    android:id=\"@+id/font_14\"
                    android: =\"font_14\"/>
                <item
                    android:id=\"@+id/font_16\"
                    android: =\"font_16\"/>
                <item
                    android:id=\"@+id/font_18\"
                    android: =\"font_18\"/>
            </group>
        </menu>
    </item>
    <!--定义一个普通菜单项-->
    <item android:id=\"@+id/plain_item\"
        android: =\"plain_item\"/>
    <item android: =\"font_color\"
        android:icon=\"@drawable/seek03\">
        <menu>
            <!--定义一个普通选项菜单-->
            <group>
                <!--定义三个菜单项-->
                <item
                    android:id=\"@+id/red_font\"
                    android: =\"red_ \"/>
                <item
                    android:id=\"@+id/green_font\"
                    android: =\"red_ \"/>
                <item
                    android:id=\"@+id/blue_font\"
                    android: =\"red_ \"/>
            </group>
        </menu>
    </item>
</menu>

三、在menu文件夹下建立:context.

<?  version=\"1.0\" encoding=\"utf-8\"?>
<menu  ns:android=\"http://schemas.android.com/apk/res/android\">
    <!--定义一组单选菜单项-->
    <group android:checkableBehavior=\"single\">
        <!--定义三个菜单项-->
        <item
            android:id=\"@+id/red\"
            android: =\"red_ \"
            android:alphabeticShortcut=\"r\"/>
        <item
            android:id=\"@+id/green\"
            android: =\"red_ \"
            android:alphabeticShortcut=\"g\"/>
        <item
            android:id=\"@+id/blue\"
            android: =\"red_ \"
            android:alphabeticShortcut=\"b\"/>
    </group>
</menu>

 

收藏 打印