2011-01-30 13 views
13

Po każdym kliknięciu w EditText pojawia się okno klawiatury klawiatury Android, ale nie chcę, aby klawiatura się pojawiła.Ukrywanie klawiatury Androida dla EditText

Chcę trwale ukryć wyskakujące okienko klawiatury Android dla mojej bieżącej aplikacji.

Jak mogę to zrobić?

+0

możliwe duplikat [? Jak zamknąć/ukryć Android klawiatury programowej] (http://stackoverflow.com/questions/1109022/how-to -close-hide-the-android-soft-keyboard) –

+0

Spójrz na to [poprzednie pytanie] (http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft- klawiatura), która zapewnia objaśnienie za pomocą [InputMethodManager] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html). – sahhhm

+0

Myślę, że moje rozwiązanie może pomóc. http://stackoverflow.com/a/21480217/2127930 – cristianomad

Odpowiedz

12

mogą starać się fałszywymi swojej EditText z przyciskiem jak ten:

<Button 
    android:id="@+id/edit_birthday" 
    style="@android:style/Widget.EditText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/hint_birthday"/> 
+0

To jest lepsze niż inne rozwiązania, ponieważ klawiatura wcale się tutaj nie wyświetla. W pozostałych przypadkach możesz zobaczyć klawiaturę pojawiającą się w instancji, zanim ponownie się wyłączy. – basilisk

+0

to działa, ale pozostaje wciśnięty po jednym dotknięciu. jak tego uniknąć? –

+0

@ImanAkbari przez ustawienie focable = "false", nie pozostaje wciśnięty. – Noel

0

Te dwa wiersz powinien robić to, co chcesz:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
+0

Nie działa wcale ... klawiatura wyskakuje jak zawsze ... Czy robisz cokolwiek innego? – TacB0sS

5

Rozwiązanie można znaleźć here:

public void onCreate(Bundle savedInstanceState) { 

edittext = (EditText) findViewById(R.id.EditText01); 

edittext.setOnEditorActionListener(new OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
      InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      in.hideSoftInputFromWindow(edittext.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 
     } 
     return false; 
     } 
    }); 
} 
9

W manifeście:

<activity 
     android:name=".YourActivity" 
     . 
     . 
     . 
     android:windowSoftInputMode="stateAlwaysHidden" > 
    </activity> 
+1

Wygląda na to, że ma to wpływ tylko wtedy, gdy klawiatura zostanie wyświetlona, ​​gdy aktywność zostanie najpierw aktywowana.Zgodnie z oficjalną dokumentacją: "Stan miękkiej klawiatury - czy jest ukryty, czy widoczny - kiedy aktywność staje się celem uwagi użytkownika". Nie blokuje klawiatury po naciśnięciu EditText. – Mike

23

Ustawienie flagi textIsSelectable na true wyłącza klawiaturę programowalną.

Można ustawić go w układzie xml tak:

<EditText 
    android:id="@+id/editText" 
    ... 
    android:textIsSelectable="true"/> 

lub programowo, tak:

EditText editText = (EditText) findViewById(R.id.editText); 
editText.setTextIsSelectable(true); 

Kursor będzie nadal obecna, będziesz w stanie select/copy/cut/paste ale miękka klawiatura nigdy się nie wyświetli.

+1

Próbowałem setek rozwiązań, ale to jedyny naprawdę działa dla mnie. I to jest najprostsze. Dzięki!! – Santacrab

+0

To jest idealne rozwiązanie –

0

Try To

public void disableSoftKeyboard(final EditText v) { 
      if (Build.VERSION.SDK_INT >= 11) { 
       v.setRawInputType(InputType.TYPE_CLASS_TEXT); 
       v.setTextIsSelectable(true); 
      } else { 
       v.setRawInputType(InputType.TYPE_NULL); 
       v.setFocusable(true); 
      } 
     } 
0

Spróbuj dodać ten w yout onCreate() metody.

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

Nie testowany, ale powinien działać!

0

W pliku xml można użyć to:

android:editable="false" 
Powiązane problemy