2017-03-25 1 views
-3

에 대한이 같은 textview 선택 dialoge에 변경하려면 여기에 내용을 붙여 넣기 :사용자 선택 대화 상자 텍스트 뷰

TextView (따라서 EditText)에는 startActionMode() 대신 사용해야하는 setCustomSelectionActionModeCallback() 메서드가 있습니다. 이를 사용하면 TextView에서 텍스트 선택에 사용되는 메뉴를 사용자 정의 할 수 있습니다. 샘플 코드 :

bodyView.setCustomSelectionActionModeCallback(new StyleCallback()); 
StyleCallback 일부 스타일링 작업을 모두 선택을 제거하고 추가하여 텍스트 선택 메뉴를 사용자의 의도에 맞게

:

class StyleCallback implements ActionMode.Callback { 

    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     Log.d(TAG, "onCreateActionMode"); 
     MenuInflater inflater = mode.getMenuInflater(); 
     inflater.inflate(R.menu.style, menu); 
     menu.removeItem(android.R.id.selectAll); 
     return true; 
    } 

    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return false; 
    } 

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     Log.d(TAG, String.format("onActionItemClicked item=%s/%d", item.toString(), item.getItemId())); 
     CharacterStyle cs; 
     int start = bodyView.getSelectionStart(); 
     int end = bodyView.getSelectionEnd(); 
     SpannableStringBuilder ssb = new SpannableStringBuilder(bodyView.getText()); 

     switch(item.getItemId()) { 

     case R.id.bold: 
      cs = new StyleSpan(Typeface.BOLD); 
      ssb.setSpan(cs, start, end, 1); 
      bodyView.setText(ssb); 
      return true; 

     case R.id.italic: 
      cs = new StyleSpan(Typeface.ITALIC); 
      ssb.setSpan(cs, start, end, 1); 
      bodyView.setText(ssb); 
      return true; 

     case R.id.underline: 
      cs = new UnderlineSpan(); 
      ssb.setSpan(cs, start, end, 1); 
      bodyView.setText(ssb); 
      return true; 
     } 
     return false; 
    } 

    public void onDestroyActionMode(ActionMode mode) { 
    } 
} 

메뉴 추가에 대한 XML은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/italic" 
      android:showAsAction="always" 
      android:icon="@drawable/italic" 
      android:title="Italic"/> 
    <item android:id="@+id/bold" 
      android:showAsAction="always" 
      android:icon="@drawable/bold" 
      android:title="Bold"/> 
    <item android:id="@+id/underline" 
      android:showAsAction="always" 
      android:icon="@drawable/underline" 
      android:title="Underline"/> 
</menu> 
+3

돈을 ' 그러지 마. 여기에는 이유가 있습니다 (이 기사는 닫혔습니다) (http://stackoverflow.com/questions/43013878/custom-selection-dialog-for-textview). 최소한 노력을 보여주세요. –

답변

관련 문제