【问题标题】:soft keyboard shows on Nexus 7 but not on Nexus 6P软键盘在 Nexus 7 上显示,但在 Nexus 6P 上不显示
【发布时间】:2016-06-24 04:34:55
【问题描述】:

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

我在 Activity 的 Manifest 中尝试了几种设置:
android:windowSoftInputMode = "stateAlwaysVisible|adjustResize|adjustPan"

从 stateAlwaysVisible 开始并添加其他的以尝试解决问题。

我在 xml 中有 requestFocus 和输入类型:

    <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

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

同样,这似乎只是在我使用 Nexus 6P 时出现的问题。

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

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

我仍然在 onCreate 中 requestFocus 并使用:

android:windowSoftInputMode = "stateAlwaysVisible|adjustResize"

对于清单中的活动。

由于该应用程序运行良好,足以满足我的使用需求,我想我已经在此应用程序上尽我所能,并且可以考虑在这种情况下解决此问题。

但是,如果有人提出其他我可以尝试的方法,我愿意试一试。

谢谢

【问题讨论】:

    标签: android android-layout keyboard


    【解决方案1】:

    我遇到了类似的问题。键盘只会在 Nexus 6P 和横向上显示一次,再也不会出现。为了解决这个问题,我在横向上将showSoftInput 调用更改为:imm.showSoftInput(myEditText, 0);

    【讨论】:

    • 试过 imm.showSoftInput(myEditText, 0);没有帮助。就目前的应用程序而言,当应用程序首次显示时,没有键盘。如果我点击金额字段,键盘会出现并停留在那里,除非我按下后退按钮或切换到横向。可能会像现在一样离开应用程序。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2014-12-25
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多