码迷,mamicode.com
首页 > 移动开发 > 详细

Android 上下文操作模式

时间:2019-12-28 20:56:19      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:instance   back   登录   部分   state   protected   activity   als   tle   

上下文操作模式和普通上下文菜单的区别在于操作模式的显示会覆盖视图顶层操作栏,而不是悬浮式的
通过在按钮上注册长按点击事件触发

上下文菜单 xml部分

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:title="登录"
        android:id="@+id/login"
        />
    <item android:title="注册"
        android:id="@+id/register"
        />
</menu>

java部分

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 按钮长按触发启动上下文操作模式
        findViewById(R.id.btn).setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                startActionMode(MainActivity.this.ac);
                return false;
            }
        });
    }
    
    // 实例化操作模式的回调类
    ActionMode.Callback ac = new ActionMode.Callback() {
        
        // 初始化时触发
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            getMenuInflater().inflate(R.menu.first, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }
        
        // 菜单项点击监听器 
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.login:
                    Toast.makeText(MainActivity.this, "你刚刚点了登录", Toast.LENGTH_LONG).show();
                    break;
                case R.id.register:
                    Toast.makeText(MainActivity.this, "你刚刚点了注册", Toast.LENGTH_LONG).show();
                    break;
            }
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // 结束时触发
        }
    };
}

Android 上下文操作模式

标签:instance   back   登录   部分   state   protected   activity   als   tle   

原文地址:https://www.cnblogs.com/esrevinud/p/12112926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!