2009-10-02 16 views

Odpowiedz

39

Dodaj androida: windowSoftInputMode = „stateAlwaysVisible” do aktywności w pliku AndroidManifest.xml:

<activity android:name=".MainActivity" 
android:label="@string/app_name" 
android:windowSoftInputMode="stateAlwaysVisible" /> 

W mojej aplikacji testowej to pokazuje klawiaturę Po uruchomieniu aplikacji, choć nie jest ona tam stała, ale można zwolnić, naciskając przycisk Wstecz.

Aby upewnić się, że klawiatura jest zawsze widoczna, konieczne może być utworzenie własnej klawiatury w ramach interfejsu użytkownika aplikacji. Oto poradnik, aby pokazać, jak to zrobić z KeyboardView: http://www.fampennings.nl/maarten/android/09keyboard/index.htm

+0

Próbowałem użyć kodu źródłowego Androida i mogę przeciągnąć klawiaturę, ale nie jestem pewien, którą część powinienem zmodyfikować, aby wyłączyć ukrywanie. Patrzę na klasę pod LatinIME.java. Próbowałem dodać inputView z tego kodu Google do WindowManager.addView. – LittleFunny

+0

@Simon Zobacz moją aktualizację mojej odpowiedzi. Prawdopodobnie chcesz użyć programu KeyboardView. – Intrications

10

Musisz mieć EditText w układzie i które muszą stopniu EditText klasy bazowej. następnie zastąp metodę onKeyPreIme() i zwróć True. Teraz twoja klawiatura będzie zawsze widoczna i nie będzie mogła zostać odrzucona klawiszem wstecz.

Uwaga: Ze względu na metodę onKeyPreIme() zwraca true nie można zamknąć aplikację używając przycisku wstecz.

Przykład:

public class CustomEdit extends EditText { 

    public CustomEdit(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 
    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 
     Log.e("Log", "onKeyPreIme"); 
     return true; 
     //return super.onKeyPreIme(keyCode, event); 
    } 
} 

onKeyPreIme() - Android developer

0

znalazłem sposób, który pracuje dla mnie, aby utrzymać klawiaturę widoczny po edycji w moim myEditText dziedzinie klasie EditText. Sztuką jest, aby zastąpić metodę onEditorAction tak, że zwraca true

myEditText.setOnEditorActionListener(new OnEditorActionListener() {      
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     return true; 
    }  
    }); 

albo mieć onEditorAction zwrot true dopiero po "Gotowe" key-click (IME_ACTION_DONE) inaczej false

myEditText.setOnEditorActionListener(new OnEditorActionListener() {      
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if(actionId==EditorInfo.IME_ACTION_DONE){ 
     Log.i(LOG_TAG, "IME_ACTION_DONE"); 
     return true;  
     } 
     return false; 
    }  
    }); 

(patrz również this answer na metodzie onEditorAction)

Dodanie android:windowSoftInputMode="stateAlwaysVisible do pliku Manifest pomogło aby klawiatura była wyświetlana podczas uruchamiania, ale nie zapobiegała jej ponownemu zniknięciu po kliknięciu przycisku "Gotowe" po edycji.

Powiązane problemy