Nexus7 4.2版本上键盘自动弹出的问题

5
我有一个包含时间选择器的对话框。 在我所有其他的手机上,一切正常。我点击按钮,对话框(包含时间选择器)出现。然后我设置时间。
在Nexus 7版本的Android 4.2中,在横向模式下,当我点击按钮时,对话框会出现并自动弹出键盘。我还没有点击TimePicker
有人知道为什么在Nexus7上出现这个问题吗?
编辑:代码如下
private DatePicker mDatePicker;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
   mDatePicker = (DatePicker) view.findViewById(R.id.date_picker);
   mDatePicker.init(mDate.get(Calendar.YEAR), mDate.get(Calendar.MONTH), mDate.get(Calendar.DAY_OF_MONTH), this);
   mDatePicker.clearFocus();
}

看一下这个。希望它能有所帮助。干杯 - g00dy
6个回答

4

使包含时间选择器的布局可聚焦。并将焦点请求到此布局。然后日期选择器将不会获得焦点,键盘也不会弹出。


3

您是否曾经尝试在对话框弹出后点击按钮隐藏键盘?类似于以下代码:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

以上代码可以通过获取系统服务中的输入法管理器,然后调用hideSoftInputFromWindow方法来实现隐藏键盘的功能。


那么你到底在做什么,键盘何时显示?你要切换到横屏模式,然后点击按钮,你的对话框出现并且键盘也出现了吗?如果是这种情况,你可以取消时间选择器的焦点。这可能会强制键盘也出现。 - hardartcore
我正在打开一个包含日期选择器的对话框。在Nexus7上,年份被聚焦并且键盘出现。在其他设备上,日期被聚焦并且没有键盘出现。 - haythem souissi
好的,请尝试移除日期选择器的焦点并试一下。 - hardartcore
你正在使用DatePicker还是DatePickerDialog? - hardartcore
你在更新什么?你能发一些代码吗,这样我们就可以看到你实际在做什么了? - hardartcore
显示剩余7条评论

3

我在我的应用程序中遇到了与我调用一个活动的SoftInputMode(键盘)有关的相同问题,并且它出现在所有其他Activities中。所以,最终我不得不在我不想要弹出SoftInputMode(键盘)的activities上添加android:windowSoftInputMode="stateAlwaysHidden"到我的manifest文件中。这样就可以消除键盘的弹出。这是我的manifestActivity的样子:

<activity
        android:name=".GMax3Main"
        android:label="@string/app_name" 
        android:windowSoftInputMode="stateAlwaysHidden">
        <intent-filter>
            <action android:name="com.medeasy.GMax3.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

2
您可以在清单文件中禁用它,具体步骤如下:

 <activity
  android:name=".activity.SampleActivity"
  android:configChanges="keyboardHidden|orientation"
 />

2

在你的布局内,添加这个标签到一个DatePicker视图中:

<SomeView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:doSomethingCool="true">
    <requestFocus/>
</SomeView>

这样可以确保DatePicker不会获取焦点,因此也不会弹出键盘。


2

manifest.xml 中的 activity 标签中添加以下行:

     android:windowSoftInputMode="stateAlwaysHidden"

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