【问题标题】:EditText with selectable text is unfocusable带有可选文本的 EditText 无法聚焦
【发布时间】:2016-11-11 03:24:41
【问题描述】:

我的应用程序包含一个带有 EditText 的弹出窗口。我希望用户不仅可以键入和删除文本,还可以在 EditText 框中复制和粘贴。

在网上搜索后发现下面的xml标签应该可以解决问题。

android:textIsSelectable="true"

我添加了该行,但无法通过单击 EditText 框打开键盘。

我找到了许多显式打开键盘的解决方案,但这不是我想要的,我希望它在单击时打开,并允许通过长按来复制和粘贴文本,就像 EditText 中的一样例如浏览器。

添加以下内容之一也不起作用:

<requestFocus />

edit_text.requestFocus();

xml:

        <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true"
        android:text=""
        android:textSize="25sp"
        android:gravity="center_horizontal"
        android:inputType="text"
        android:layout_weight="0.1"
        android:id="@+id/editTextPopup_input"
        android:layout_marginEnd="20sp" />

Java:

    public static void inflateEditTextPopup(int parent_id, String content_text, String edit_text_text, String act_button_text)
{
    LayoutInflater layoutInflater = (LayoutInflater)Main.main_activity.getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    final View popupView = layoutInflater.inflate(R.layout.edit_text_popup, null);
    final PopupWindow window = new PopupWindow(popupView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    window.setFocusable(true);
    final EditText input = (EditText)popupView.findViewById(R.id.editTextPopup_input);
    input.setText(edit_text_text);
    input.setFocusable(true);
    input.requestFocus();

    TextView content = (TextView)popupView.findViewById(R.id.editTextPopup_content);
    content.setText(content_text);

    Button btnClose = (Button)popupView.findViewById(R.id.editTextPopup_cancel);
    btnClose.setOnClickListener(new Button.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            window.dismiss();
        }
    });

    Button btnAct = (Button)popupView.findViewById(R.id.editTextPopup_ok);
    btnAct.setText(act_button_text);
    btnAct.setOnClickListener(new Button.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            handleEditTextPopupInput(window, input.getText().toString());
            window.dismiss();
        }
    });

    LinearLayout parent = (LinearLayout)Main.main_activity.findViewById(parent_id);
    window.showAsDropDown(parent);
}

日志猫:

W/TextView: TextView does not support text selection. Selection cancelled.

【问题讨论】:

  • 以编程方式在edittext或xml中添加focusableInTouchMode属性,希望能解决您的问题...
  • 不幸的是它没有解决它。不过谢谢

标签: java android android-edittext focusable


【解决方案1】:

网上查了很多,发现没有答案,因为这是Android的一个bug,无法从PopupWindow中选择EditText。

在我的例子中,我使用了“粘贴”按钮之类的东西,虽然不是很舒服,但对我来说已经足够了。

【讨论】:

  • 感谢您的实验。我浪费了几个小时的时间来寻找我的代码的问题,但结果是 android 的错误......
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 2018-03-26
  • 1970-01-01
  • 2021-04-24
  • 2014-12-27
相关资源
最近更新 更多