2015-08-26 89 views
1

當編輯文本獲得焦點或者用戶點擊編輯文本時,我需要防止軟鍵盤出現,因爲用戶必須使用條形碼掃描器作爲輸入法。但我需要的是當用戶點擊/點擊特定按鈕時打開鍵盤。防止SoftKeyboard在EditText上打開焦點

我試過focusableInTouchMode屬性,它可以很好地防止softkeyboard彈出,但它不會讓編輯文本獲得焦點。

有關如何實現此目的的任何提示?

回答

0

您可以使用此代碼

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
+0

我相信這上面的行將執行與puttin ** android:windowSoftInputMode =「stateAlwaysHidden」**清單文件中的相同,但我添加了您剛剛在onCreate函數中給出的行,但是每當我點擊編輯文本時它仍然打開軟鍵盤。 –

0

您應該使用stateAlwaysHidded隱藏鍵盤。無論是在運行時作爲第一個答案,或者直接在您的項目清單:

android:windowSoftInputMode="stateAlwaysHidden" 

這將防止從鍵盤中的onCreate /出現的onResume。

爲了防止鍵盤點擊的EditText後出現的,你可以把就在您的EditText的頂部透明的底色一些空白視圖:

<View 
    android:id="@+id/view" 
    android:layout_width="editTextWidth" 
    android:layout_height="editTextWidth" 
    android:background="@android:color/transparent" 
    android:clickable="true"/> 

這裏的關鍵屬性是android:clickable="true"。它將防止獲得關注點擊(實際上用戶將點擊這個空白的視圖,而不是EditText)。

然後,當用戶點擊你所提到的特殊按鈕,你只是刪除此空白視圖,並且調用editText.requestFocus()

1
myEditText.setInputType(InputType.TYPE_NULL); 

myEditText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // showMyDialog(); 
    } 
}); 

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      // showMyDialog(); 
     } 
    } 
}); 

試試這個....就返回null或任何東西onclicklistner ..

Njoy .. :) 而m使用它,所以不要告訴我它不工作..大聲笑..

我有一個條件,如果用戶點擊edittext然後它會彈出DatePicker對話框及其工作。 所以njoy花花公子......:)

+0

真棒...工作完美 –