2014-04-16 3 views
0

Google은 기본적으로보기에서 일부 텍스트를 선택한 후 기본적으로 : copy, cut, select all과 같은 몇 가지 기본 옵션으로 Contextual Action Bar (CAB)를 표시합니다. ...Android 기본에 더 많은 옵션을 추가하는 방법 Contextual Action Bar

이제 응용 프로그램을 만들려고합니다. (켜기/끄기 옵션이 2 개만 있습니다.) 켜기로 설정하면 다른 옵션이 기본 CAB에 추가됩니다. 사용 중지하면 내 맞춤 옵션이 Android 기본 CAB에서 삭제됩니다.

내 질문은 :이 기본 CAB에 몇 가지 옵션을 추가/제거 할 수 있습니까? 위의 신청서는 어떻게 작성합니까?

고맙습니다!

+1

[TextView.setCustomSele ctionActionModeCallback] (http://stackoverflow.com/a/22833303/420015)이 당신이 찾고있는 것입니다. – adneal

+0

이 변경 사항을 모든 응용 프로그램의 모든 TextView에 어떻게 적용 할 수 있습니까? 내가 언급했듯이, 나는 단지 2 개의 옵션을 ON과 OFF로하는 어플리케이션을 만들고 싶다 : ON을 선택하면, CAB에 몇 가지 옵션이 추가 될 것이다. OFF를 선택하면, 그것들이 이동 될 것이다. 고맙습니다! – Binngokute

답변

0

각 TextView에 setCustomSelectionActionModeCallback을 사용해야합니다. , onCreateActionMode에서 editContextualActionBar 방법을 사용하여 텍스트 뷰에 콜백을 호출

private void editContextualActionBar(ActionMode actionMode, Menu menu) { 
    if (on) { 
     // adds a new menu item to the CAB 
     // add(int groupId, int itemId, int order, int titleRes) 
     menu.add(0, R.id.action_to_be_performed, 1, R.string.action_name); 
    } else { 
     // removes the new menu item 
     menu.removeItem(R.id.action_to_be_performed); 
    } 
} 

마지막 :

boolean on = true; 

그런 다음 실제로 CAB과 같이 편집 방법을 만듭니다

당신은 부울을 가질 수 있습니다 onActionItemClicked에서 메뉴 작업을 수행하십시오.

textView.setCustomSelectionActionModeCallback(new ActionMode.Callback() { 
     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      editContextualActionBar(mode, 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.action_to_be_performed: 
        // perform action 
        return true; 
       default: 
        break; 
      } 
      return false; 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 

     } 
    });