2016-02-14 76 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