【发布时间】: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