2017-03-25 13 views
-3

のために私はこのようなtextview選択し、ダイアログボックスで変更したいですカスタム選択]ダイアログには、TextViewの

TextView(したがってEditText)にはstartActionMode()の代わりに使用するsetCustomSelectionActionModeCallback()というメソッドがあります。これを使用すると、テキスト選択でTextViewで使用されるメニューをカスタマイズできます。

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

ドン」サンプルコード:StyleCallbackはすべての選択を削除すると、いくつかのスタイリングアクションを追加することにより、テキストの選択メニューをcustomises

bodyView.setCustomSelectionActionModeCallback(new StyleCallback()); 

それをしないでください。理由は[これは閉鎖されました](http://stackoverflow.com/questions/43013878/custom-selection-dialog-for-textview)です。少なくとも、あなたの努力を示してください。 –

答えて

関連する問題