2016-02-14 72 views
1

我从书中创建一个简单的小费计算器程序,并且无法在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" 

在清单中的活动。

由于该应用程序对我的使用来说足够好用了,所以它的用途已经足够,我想我已经尽可能地在这个应用程序的这一点上,并且在这种情况下可以考虑关闭此问题。

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

谢谢

回答

0

我有类似的问题。键盘会显示一次,永远不会再显示,只能在Nexus 6P和横向上显示。修复我改变了showSoftInput呼吁,当在风景上:imm.showSoftInput(myEditText, 0);

+0

尝试imm.showSoftInput(myEditText,0);没有帮助。当应用程序立即显示时,应用程序首先显示,没有键盘。如果我点击金额字段,键盘出现并停留在那里,除非我按下后退按钮或切换到横向。现在可能会离开应用程序。感谢您的建议。 – mtdavem