我从书中创建一个简单的小费计算器程序,并且无法在Nexus 6P上运行应用程序时显示数字软键盘。如果我在Nexus 7上运行应用程序,它会按预期工作。 Nexus 6P有没有可能存在的问题,还是我忽略了一些问题?在Nexus 7上显示软键盘,但不在Nexus 6P上
我已经在清单试了设置的活动:
机器人:windowSoftInputMode =“stateAlwaysVisible | adjustResize | adjustPan”
开始了stateAlwaysVisible并添加了其他人来尝试解决问题。
我有requestFocus的,并在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=""
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 - 无喜。
任何建议,将不胜感激。
编辑
进一步测试后,它看起来像网格布局在和约束和去除填充的问题,尽管错误消息是不是什么问题了非常明确:
d /机器人。 widget.GridLayout:水平约束:x2-x1> = 482,x2-x0 < = 2112,x2-x1 < = 100不一致;永久移除:x2-x0 < = 2112,x2-x1 < = 100。 y3-y1> = 113,y3-y2> = 0,y4-y3> = 113,y5-y4> = 169,y6-y5> = 169,y3-> y2> y1> y1> y3> y1> y2> y1> y1> y3> y2> y7-y6> = 0,y8-y7> = 0,y2-y1 = < = 91,y1-y0 = < = 186不一致;永久删除:y2-y1 < = 91。
再一次,这只是当我在Nexus 6P上出现问题。
因此,我重写了应用程序xml以使用RelativeLayout与嵌入式LinearLayouts而不是GridLayout。
应用程序现在效果更好,但软键盘不会自动出现,直到我点击EditText字段。
我还是requestFocus的中的onCreate和使用:
android:windowSoftInputMode = "stateAlwaysVisible|adjustResize"
在清单中的活动。
由于该应用程序对我的使用来说足够好用了,所以它的用途已经足够,我想我已经尽可能地在这个应用程序的这一点上,并且在这种情况下可以考虑关闭此问题。
但是,如果有人想出其他的东西我可以尝试,我愿意放弃它。
谢谢
尝试imm.showSoftInput(myEditText,0);没有帮助。当应用程序立即显示时,应用程序首先显示,没有键盘。如果我点击金额字段,键盘出现并停留在那里,除非我按下后退按钮或切换到横向。现在可能会离开应用程序。感谢您的建议。 – mtdavem