上下文ContextMenu

来源:互联网 发布:淘宝详情页分辨率 编辑:程序博客网 时间:2024/05/23 11:50
ContextMenu 上下文菜单 因为需要操作者长按选项,该功能有可能不被发现,所以应用开发应该避免使用该功能
    关键字:
    registerForContextMenu    注册上下文
    MenuInflater    menu 独有的解析器
    ListView     ContextMenu 列表实现
public class Context_Activity extends AppCompatActivity {

    Toolbar mToolbar;
    View view;
   ListView mlistview;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_context_layout);

        mlistview = (ListView) findViewById(R.id.menu_context_contextbar);
        mToolbar = (Toolbar) findViewById(R.id.menu_context_toolbar);
        view = findViewById(R.id.menu_context_relative);// TODO: 2016/6/6 得到view的对向 在SnackBar里面使用

        mToolbar.inflateMenu(R.menu.my_option_menu);//todo 解析布局文档

        String[] strings = {"java","android","ios"};
        ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,strings);
        mlistview.setAdapter(arrayAdapter);

        registerForContextMenu(mlistview);//todo 注册上下文,实现与mlistview的关联
//        TODO 监听选项
        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.my_option_add:
//                        Toast.makeText(Context_Activity.this, "添加成功", Toast.LENGTH_SHORT).show();
                        Snackbar.make(view,"添加成功",Snackbar.LENGTH_SHORT).show();
                        break;
                    case R.id.my_option_delete:
                        Toast.makeText(Context_Activity.this, "删除成功", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.my_option_edit:
                        Toast.makeText(Context_Activity.this, "修改成功", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.my_option_check:
                        Toast.makeText(Context_Activity.this, "查找到", Toast.LENGTH_SHORT).show();
                        break;
                }
                return false;
            }

        });
//        TODO 监听导航选项
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(Context_Activity.this, "返回", Toast.LENGTH_SHORT).show();
                finish();
            }
        });
    }
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater menuInflater = getMenuInflater();     //todo 得到ContextMenu的独有实例
        menuInflater.inflate(R.menu.my_option_menu,menu);    //todo menu 资源文件的解析
        super.onCreateContextMenu(menu, v, menuInfo);
    }
}

ContextMenu.xml布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu_context_relative"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.v7.widget.Toolbar
        android:id="@+id/menu_context_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/green"

        app:title="设置"
        app:titleTextColor="@color/blue"
        app:logo="@drawable/dog1"
        app:subtitle="java"
        app:subtitleTextColor="@color/blue"
        app:navigationIcon="@drawable/ic_action_back"
        />
   <ListView
       android:id="@+id/menu_context_contextbar"
       android:layout_below="@id/menu_context_toolbar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
</RelativeLayout>

0 0
原创粉丝点击