• 长按显示菜单选项,系统菜单,上下文菜单


    今天看视频学了新的知识,那就是通过两种不同的方式实现菜单(java代码实现、xml文件实现)菜单。先来上几个程序运行截图:

    这是三个小案例的截图,我就不废话那么多,直接上例子代码了。

    案例一代码就是一个java代码。是通过java代码实现菜单的。

    MainActivity.java
    package cn.edu.aynu.rjxy.activity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @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);
            //使用java代码实现菜单,最多显示6个子菜单
            MenuItem menuItem = menu.add(1001, 100, 1, "系统菜单");
            menuItem.setTitle("菜单一");
            MenuItem menuItem2 = menu.add(1001, 101, 2, "用户菜单");
            menuItem2.setTitle("菜单二");
            MenuItem menuItem3 = menu.add(1001, 102, 2, "客户菜单");
            menuItem3.setTitle("菜单三");
            return true;
        }
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case 100:
                Toast.makeText(MainActivity.this, "选择了菜单一", 0).show();
                break;
            case 101:
                Toast.makeText(MainActivity.this, "选择了菜单二", 0).show();
                break;
            case 102:
                Toast.makeText(MainActivity.this, "选择了菜单三", 0).show();
                break;
    
            default:
                break;
            }
            return super.onOptionsItemSelected(item);
        }
        
    }

    案例二代码:

    在下面你的截图中的xml文件中写下面的代码:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/action_settings"
            android:icon="@drawable/ic_launcher"
            android:orderInCategory="100"
            android:showAsAction="ifRoom|withText"
            android:title="@string/action_settings">
            <menu >
                <item 
                    android:id="@+id/create_new"
                    android:title="新建文件夹">                
                </item>
                <item 
                    android:id="@+id/open"
                    android:title="打开文件夹">                
                </item>  
            </menu>    
        </item>
        <item 
            android:id="@+id/sys"
            android:icon="@drawable/ic_launcher"
            android:orderInCategory="101"
            android:showAsAction="never"
            android:title="用户菜单">
            <menu>
                <group 
                    android:id="@+id/group1">
                    <item 
                        android:id="@+id/load"
                        android:title="加载文件">
                    </item>
                </group>
                <group 
                    android:id="@+id/group2">
                    <item 
                        android:id="@+id/save"
                        android:title="保存文件">
                    </item>
                </group>
            </menu>
        </item>
    </menu>
    MainActivity.java
    package cn.edu.aynu.rjxy;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.create_new:
                //加载意图
                //Intent intent = new Intent(MainActivity.this,LoginActivity.class);
                //item.setIntent(intent);
                Toast.makeText(MainActivity.this, "新建文件夹", 0).show();
                break;
            case R.id.load:
                Toast.makeText(MainActivity.this, "加载文件夹", 0).show();
                break;
            case R.id.open:
                Toast.makeText(MainActivity.this, "打开文件夹", 0).show();
                break;
            case R.id.save:
                Toast.makeText(MainActivity.this, "保存文件夹", 0).show();
                break;
    
            default:
                break;
            }
            return super.onOptionsItemSelected(item);
        }
        
    }

    案例三代码:

    下面代码的改写位置同上面的一样。

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/edit"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="edit"/>
        <item
            android:id="@+id/share"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="share"/>
        <item
            android:id="@+id/delete"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="delete"/>
    
    </menu>
    MainActivity.java
    package cn.edu.aynu.rjxy.activity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import cn.edu.aynu.rjxy.activity.R.menu;
    
    import android.os.Bundle;
    import android.R.anim;
    import android.app.Activity;
    import android.view.ContextMenu;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        private ListView listview;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            listview = (ListView) findViewById(R.id.listView1);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getData());
            listview.setAdapter(adapter);
            //给listview注册上下文菜单
            registerForContextMenu(listview);
        }
        public List<String> getData(){
            List<String> list = new ArrayList<String>();
            for (int i = 0; i < 7; i++) {
                list.add("jack"+i);
            }
            return list;
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            //加载xml中的上下文菜单
            super.onCreateContextMenu(menu, v, menuInfo);
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main, menu);
        }
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.edit:
                Toast.makeText(MainActivity.this, "edit", 0).show();
                break;
            case R.id.share:
                Toast.makeText(MainActivity.this, "share", 0).show();
                break;
            case R.id.delete:
                Toast.makeText(MainActivity.this, "delete", 0).show();
                break;
            default:
                break;
            }
            return super.onContextItemSelected(item);
        }
    }
  • 相关阅读:
    React项目升级遇到的问题复盘(2019-09-02)
    前端项目升级到React-router5中遇到的问题解决方案以及思路
    三行Jquery代码实现简单的选项卡
    开放-封闭原则
    单一职责原则
    简单工厂模式(c++实现)
    博客园使用MarkDown格式记录博客
    Qml 的Image对应的source不变,但是图片内容改变却不会刷新的解决方案
    Qt中第一请求web api连接返回缓慢问题
    Qt的pro文件工程配置
  • 原文地址:https://www.cnblogs.com/kangyaping/p/6078938.html
Copyright © 2020-2023  润新知