防止在AlertDialog中自动聚焦EditText

时间:2014-08-08 10:46:20

标签: android android-edittext alertdialog

我在阻止AlertDialog中的EditText自动获取焦点并显示键盘时遇到了一些麻烦。

展示活动有windowSoftInputMode=stateHidden和EditTexts,在活动加载时无法获得焦点。但是当显示对话框时,键盘会自动出现。

如何在显示键盘时阻止我的AlertDialog显示?

3 个答案:

答案 0 :(得分:16)

如果您有AlertDialog的自定义布局,则可以使用获取焦点而不是编辑文本的虚拟视图:

<!-- Dummy view -->
<View
    android:layout_width="0dp" 
    android:layout_height="0dp"
    android:focusable="true" 
    android:focusableInTouchMode="true"/>

尝试将该视图放在edittext之前。

答案 1 :(得分:0)

创建编辑文本时使用以下内容

 <EditText
           android:id="@+id/E_table_no"
           android:layout_width="0dp"
           android:layout_height="38dp"
           android:layout_weight="1"
           android:focusableInTouchMode="false"
           android:imeOptions="flagNoExtractUi"
           android:singleLine="true"
           android:windowSoftInputMode="stateHidden" />

答案 2 :(得分:-1)

使用以下代码强制隐藏Android SoftKeyboard,

EditText myEditText = (EditText) findViewById(R.id.myEditText);  
InputMethodManager imm = (InputMethodManager)getSystemService(
      Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);