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