неправильное поведение копирования / вставки всплывающего окна в пользовательском диалоговом окне предупреждения с редактированием текста - PullRequest
0 голосов
/ 23 мая 2018

Я создаю собственный AlertDialog с EditText внутри.Это мой код:

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.MyDialog));
builder.setTitle(R.string.something);
final EditText input = new EditText(context);
input.setText("something");
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
input.setSelectAllOnFocus(true);
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
   inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
FrameLayout container = new FrameLayout(Activity.this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
params.rightMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
input.setLayoutParams(params);
container.addView(input);
builder.setView(container);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        //some business logic
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });
builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialogInterface.cancel();
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });
AlertDialog dialog = builder.create();
dialog.show();

Все работает как положено.Проблема в том, что когда я долго нажимаю на текст внутри EditText, вместо этого отображается белый макет, если я касаюсь его, действия выполняются, но я ничего не вижу там.Что здесь происходит?

пользовательский AlertDialog с EditText внутри

белый макет над AlertDialog, где должны быть параметры копирования / вставки

стиль:

<style name="MyDialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@color/white</item>
    <item name="android:textColorPrimary">@color/textColorPrimary</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
...