如何防止软键盘在触摸时弹出

3
当特定的EditText被触摸时,我不希望软键盘出现。但是我仍然希望能够在用户请求时显示软键盘(比如按下按钮)并允许用户编辑文本。 我知道如何显示/隐藏软键盘,只是不知道如何防止它在触摸时出现。 有什么建议吗?
一般的想法是用户将主要使用文本中的选择/位置,并只偶尔输入字符。当选择或导航文本时,我不希望软键盘减少可见的文本量。

在你的XML中使用以下代码 android:editable="false" android:focusable="false",然后你就可以显示警告对话框,让用户选择选项。 - Rakshit Nawani
6个回答

3

简单使用

 txtEdit.setShowSoftInputOnFocus(false);

当您想要启用它时,请反转上述过程。


谢谢,setShowSoftInputOnFocus(false) 起作用了。我不确定为什么要使用所有的反射内容... - Rediska
@Rediska,正如您所说反射是不必要的,但在Android Studio中,当我尝试查找此方法时,它不在建议列表中,只有在API 21或更高版本上才可以应用此方法。 - bryan c

1
这个可以工作:

editText.setShowSoftInputOnFocus(false);

0

AndroidManifest.xml windowSoftInputMode

Android清单文件{{link1:windowSoftInputMode}}

 <activity android:name=".MyActivity" android:windowSoftInputMode="adjustPan"> </activity>

0

尝试下面的代码,它可以隐藏键盘:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Rediska

0

为什么不禁用EditText。这样它就不会在点击时显示键盘。你可以这样做:

android:editable="false" //from xml
et.setEnabled(false);  //from activity

然后在您的按钮单击事件中,通过将上述代码设置为true来启用它。并使您的键盘出现。

此外,如果您无法在EditText上获取焦点,则可以:

et.requestFocus(); // from activity

<EditText
    android:id="@+id/et1"
    android:editable="false"
    android:layout_width="150dp"
    android:layout_height="wrap_content" >
    <requestFocus/>
</EditText> 

//来自xml

希望这可以帮到您!


0

在清单文件中的活动中添加以下代码
android:windowSoftInputMode="adjustPan"


这将影响活动中的每个EditText,而不是特定的一个。 - Rediska

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接