자신의 Contextual Action Mode 를 실현 하 다

11832 단어 android
원문:http://www.cnblogs.com/JinyaoLi/p/3868719.html
자신의 Contextual Action Mode 를 실현 하 다
4.0 이후 새로운 menu 를 표시 하 는 방식 으로 Menu 를 Action Bar 에 표시 합 니 다.
doc:  http://developer.android.com/guide/topics/ui/menus.html#CAB
TextView 가 설정 되 어 있 으 면 (API 11)
android:textIsSelectable="true"

그러면 TextView 를 길 게 누 르 면 나 와 요.

우 리 는 스스로 이 Action Mode 를 실현 하고 스타일 을 사용자 정의 할 수 있 습 니 다.
하나의 독립 된 View 를 위해 contextual action mode 를 실현 하기 위해 두 단계 가 있 습 니 다. 1. Action Mode. Callback 인 터 페 이 스 를 실현 합 니 다.2. ActionMode 를 표시 하려 면 startActionMode () (또는 getActivity (). startActionMode () 를 프 래 그 먼 트 로 실행)
1. Action Mode. Callback 인 터 페 이 스 를 실현 합 니 다.
 1 //    ActionMode       
 2 private ActionMode mActionMode;
 3 private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
 4         // Called each time the action mode is shown. Always called after onCreateActionMode, but
 5         // may be called multiple times if the mode is invalidated.
 6         @Override
 7         public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
 8             // TODO Auto-generated method stub
 9             return false;
10         }
11          // Called when the user exits the action mode
12         @Override
13         public void onDestroyActionMode(ActionMode arg0) {
14             // TODO Auto-generated method stub
15             Toast.makeText(getApplicationContext(), "Action Mode Closed",Toast.LENGTH_SHORT).show();
16             mActionMode = null;
17         }
18         // Called when the action mode is created; startActionMode() was called
19         @Override
20         public boolean onCreateActionMode(ActionMode mode, Menu menu) {
21             // TODO Auto-generated method stub
22             MenuInflater inflater = mode.getMenuInflater();
23              inflater.inflate(R.menu.main_context_menu, menu);
24             return true;
25         }
26          // Called when the user selects a contextual menu item
27         @Override
28         public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
29             // TODO Auto-generated method stub
30             int id = arg1.getItemId();
31             
32             return false;
33         }
34     };


2. startActionMode 실행 ()
1 mActionMode = startSupportActionMode(mActionModeCallback);
2 mActionMode.setTitle("contextual action mode");

startActionMode () 를 실행 하면 ActionMode 대상 을 얻 을 수 있 습 니 다. 이 대상 을 통 해 제목, finish 현재 ActionMode 등 을 설정 할 수 있 습 니 다.
다음은 CloseButton 옆 에 있 는 Divider 를 삭제 하 는 등 Action Mode 스타일 을 사용자 정의 할 수 있 습 니 다.
 1 <style name="MyActionBarTheme" parent="@style/Theme.AppCompat.Light">
 2         <item name="android:actionBarStyle">@style/MyActionBaritem>
 3         <item name="android:actionModeCloseDrawable">@drawable/ic_launcheritem>
 4         <item name="android:actionModeBackground">@color/yellowitem>
 5 
 6         
 7         
 8         <item name="android:actionModeCloseButtonStyle">@nullitem>
 9     style>
10 
11     <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
12         <item name="android:background">@color/greenitem>
13     style>


효과:
实现自己的Contextual Action Mode_第1张图片    实现自己的Contextual Action Mode_第2张图片
호 환 가능 2.1 (가상 컴퓨터 는 2.3 이지 만 제목 텍스트 색상 을 정의 하지 않 았 습 니 다. 부모 테마 로 인해 제목 텍스트 가 흰색 이 고 검은색 으로 정의 할 수 있 습 니 다)
  实现自己的Contextual Action Mode_第3张图片

좋은 웹페이지 즐겨찾기