【问题标题】:Android - Prevent Softkeyboard from closing after EditText has been disabledAndroid - 在禁用 EditText 后防止软键盘关闭
【发布时间】:2016-12-16 02:51:47
【问题描述】:

我正在尝试一个非常简单的 UI,有一个 EditText 和一个 ImageView。当我单击 EditText 时,我想接受用户的输入。现在,当我单击 ImageView 时(键盘仍处于打开状态),我想禁用 EditText 并同时防止软键盘关闭。但是 setEnabled(false) 会自动关闭软键盘。

这是我的活动:

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        final EditText editText = (EditText) findViewById(R.id.edit_text);
        final ImageView imageView = (ImageView) findViewById(R.id.image_view);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editText.setEnabled(false);
            }
        });
    }
}

这是用户界面:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.pearson.android.test.stackoverflow_efficient_data_construction_recyclerview.SecondActivity"
    tools:showIn="@layout/activity_second">

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="300dp"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/image_view"
        android:layout_alignParentRight="true"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@android:color/holo_red_dark"/>

</RelativeLayout>

我尝试像这样保持软键盘打开:

InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

但是有一个非常明显的闪烁(好像旧键盘关闭并被新键盘取代)。

我还尝试不禁用 EditText(单击图像后我应该无法输入任何文本)并尝试操纵其可聚焦性,但没有成功。

任何方向或解决方案将不胜感激。

【问题讨论】:

  • 为什么要保持软键盘打开,即使用户不应该能够键入它?那是糟糕的设计,用户不会知道发生了什么。
  • 我实际上正在努力解决同样的问题。例如:有 4 个按钮,每个按钮显示一个新的 Search EditText 来代替旧的。旧的动画出来并被禁用,新的动画进入。我想在 EditText 字段发生变化时保持键盘向上。上述方法均无效。

标签: android android-edittext android-softkeyboard


【解决方案1】:

试试这个代码来隐藏键盘

  imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               hideKeyboard(getContext());
            }
        });
public static void hideKeyboard(Context ctx) {
            InputMethodManager inputManager = (InputMethodManager) ctx
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            View v = ((Activity) ctx).getCurrentFocus();
            if (v == null)
                return;

            inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }

【讨论】:

  • 我不想隐藏键盘,我想做的恰恰相反,即使在禁用 EditText 后也保持打开状态
  • InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
  • 从无到有的问题的典型 SO 答案。为什么它甚至没有-1000'缩小?没有解决办法,应该删除这个答案
猜你喜欢
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
相关资源
最近更新 更多