Androidコンテキスト操作モード

2111 ワード

コンテキスト操作モードと通常のコンテキストメニューの違いは、操作モードの表示がビューの最上位の操作バーを上書きすることであり、ボタンに長押しクリックイベントを登録することによってトリガーされるのではなく、フローティングな操作バーを上書きすることである.
コンテキストメニューxmlセクション


    
    

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) {
            //      
        }
    };
}