我正在从一本书中创建一个简单的小费计算器程序,并且在Nexus 6P上运行应用程序时无法显示数字软键盘。如果我在Nexus 7上运行应用程序,它会按预期工作。 Nexus 6P可能存在问题,还是我忽视了一些问题?
我在活动的清单中尝试了几个设置:
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&gt; = 482,x2-x0&lt; = 2112,x2-x1&lt; = 100不一致;永久删除:x2-x0&lt; = 2112,x2-x1 <= 100。
D / android.widget.GridLayout:垂直约束:y2-y1&gt; = 113,y3-y2&gt; = 0,y4-y3&gt; = 113,y5-y4&gt; = 169,y6-y5&gt; = 169,y7 -y6> = 0,y8-y7> = 0,y2-y1 <= 91,y1-y0 <= 186不一致;永久删除:y2-y1 <= 91。
同样,当我使用Nexus 6P时,这似乎只是一个问题。
因此,我重新编写应用程序xml以使用RelativeLayout和嵌入的LinearLayout而不是GridLayout。
应用程序现在效果更好,但在点击EditText字段之前,软键盘不会自动显示。
我仍然在onCreate中请求焦点并使用:
android:windowSoftInputMode = "stateAlwaysVisible|adjustResize"
表示清单中的活动。
由于应用程序的运行状态足以满足我的使用需求,我认为我已经在这个应用程序的这一点上尽力而为,并且在这种情况下可以考虑关闭此问题。
然而,如果有人想出我可以尝试的其他东西,我愿意试一试。
由于
答案 0 :(得分:0)
我遇到了类似的问题。键盘只会显示一次,而不会再次显示,仅适用于Nexus 6P和横向。要解决此问题,我在横向广告时更改了showSoftInput
来电:imm.showSoftInput(myEditText, 0);