软键盘在Nexus 7上显示,但在Nexus 6P上不显示



我正在从一本书中创建一个简单的小费计算器程序,但在Nexus 6P上运行该应用程序时无法显示数字软键盘。 如果我在Nexus 7上运行该应用程序,它会按预期工作。 Nexus 6P可能存在问题还是我忽略了什么?

我已经在活动的清单中尝试了几种设置:
android:windowSoftInputMode = "stateAlwaysVisible|adjustResize|adjustPan">

从stateAlwaysVisible开始,并添加了其他内容以尝试解决问题。

我在 xml 中有请求焦点和输入类型:

    <EditText
        android:id="@+id/amountEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="0"
        android:digits="0123456789"
        android:inputType="number"
        android:maxLength="6">
        <requestFocus />
    </EditText>/>

    <TextView
    android:id="@+id/amountDisplayTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_gravity="fill_horizontal"
    android:layout_row="0"
    android:background="@android:color/holo_blue_bright"
    android:padding="@dimen/textview_padding"
    android:textAppearance="?android:attr/textAppearanceMedium" />

在java代码中,我再次尝试将焦点设置在amountEditText字段上:

amountEditText = (EditText) findViewById(R.id.amountEditText);
    amountEditText.requestFocus();
    amountEditText.addTextChangedListener(amountEditTextWatcher);
    amountEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            resetUI();
        }
    });
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(amountEditText, InputMethodManager.SHOW_IMPLICIT);

当我在 Nexus 7(android 5.1.1(上运行它时,应用程序启动时会显示软键盘,正如预期的那样。

当我在Nexus 6P(android 6.0.1(上运行它时,应用程序启动时不显示软键盘。 但是,如果我多次点击输入字段,软键盘可能会决定显示。 如果是,它是一个较小的键盘,然后是Nexus 7。

我已经在Android Studio 1.5和2.0 Beta 4中为这些设备生成了代码。 相同的结果。

目标 SDK 版本

为 23,最低 SDK 版本为 21。 尝试将目标SDK版本更改为22 - 没有乐趣。

任何建议将不胜感激。

编辑

经过进一步测试,看起来 GridLayout 在约束和删除内容方面存在问题,尽管错误消息不太清楚问题是什么:

D/android.widget.GridLayout:水平约束:x2-x1>=482,x2-x0<=2112,x2-x1<=100不一致;永久删除:x2-x0<=

2112,x2-x1<=100。

D/android.widget.GridLayout:垂直约束:y2-y1>=113,y3-y2>=0,y4-y3>=113,y5-y4>=169,y6-y5>=169,y7-y6>=0,y8-y7>=0,y2-y1<=

91,y1-y0<=186不一致;永久删除:y2-y1<=91。

同样,这似乎只是当我使用Nexus 6P时才是一个问题。

因此,我重新编写了应用程序xml,以使用带有嵌入式LinearLayouts的RelativeLayout,而不是GridLayout。

应用程序现在运行得更好,但软键盘不会自动显示,直到我点击 EditText 字段。

我仍然要求专注于创建和使用:

android:windowSoftInputMode = "stateAlwaysVisible|adjustResize"

对于清单中的活动。

由于该应用程序对于我的使用来说足够好,这就是它的全部目的,我想我已经在这个应用程序上走了我很远,并且可以认为这个问题在这种情况下已经结束。

但是,如果有人想出我可以尝试的其他东西,我愿意试一试。

谢谢

我遇到了类似的问题。键盘会显示一次,再也不会显示,仅在Nexus 6P和横向方向上显示。为了修复,我在横向时更改了showSoftInput调用:imm.showSoftInput(myEditText, 0);

最新更新