저는 EditText가 있으며 사용자가 일부 텍스트를 선택하고 선택한 텍스트 (굵게, 기울임 꼴 등)에 몇 가지 기본 서식을 적용 할 수있게하려고합니다. 그래도 표준 복사, 잘라 내기, 붙여 넣기 옵션이 필요합니다. 안드로이드 문서에서 어딘가에 이것을 읽으려면 EditText에서 setCustomSelectionActionModeCallback()을 호출하고 ActionModeCallback()을 전달해야합니다. 그래서 그렇게했습니다. 내 활동의에서 onCreate에서오버플로 버튼으로 인해 작업 모드가 강제로 완료됩니다.
() 메소드 :
myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());
콜백 선언 : 여기 내 코드의
private class TextSelectionActionMode implements ActionMode.Callback {
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.add("Bold");
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
}
제가하는 데 문제는입니다 나는 (에 오버 플로우 버튼을 클릭하면 내 "굵게"메뉴 항목에 액세스) ActionMode가 즉시 닫힙니다. 그것은 잘 작동
MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
하고 (이것은 분명 아무것도 안하지만) 나는 그것을 클릭 할 수 있습니다 : 내가 설정 한 경우 항상이를 사용하여 액션으로 표시합니다. 내가 여기서 무엇을 놓치고 있니?
편집 : 프로그래밍 방식으로 메뉴 항목을 추가하는 대신 메뉴를 실제로 팽창 시키면 정확히 동일한 문제가 발생합니다. 다시 한번 말하지만, 내가 항상 행동으로 보여 주도록 강요하면 문제는 사라집니다.
그래, 어떻게 문제를 예방할 수 있습니까? – MBulava