2017-03-25 92 views
-3

我想改變textview選擇dialoge這樣的: enter image description here自定義選擇對話框的TextView

我想要的圖標

+3

別這樣做。有一個原因[這是關閉](http://stackoverflow.com/questions/43013878/custom-selection-dialog-for-textview)。至少在你方面表現出一些努力。 –

回答

1

2列看一看這個鏈接https://stackoverflow.com/a/13004720/7764939

我只是在此粘貼其內容:

TextView(因此EditText)有一個方法setCustomSelectionActionModeCallback()應該使用,而不是startActionMode()。使用此功能可以自定義TextView用於文本選擇的菜單。示例代碼:

bodyView.setCustomSelectionActionModeCallback(new StyleCallback()); 

其中StyleCallback通過刪除全部選擇和添加一些造型動作customises文本選擇菜單:

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> 
+0

謝謝,但我想要2列圖標 –