P
phiLue
Neues Mitglied
- 0
Guten Morgen liebe Android-Community
Ich bin hier schon öfter ab und an mal am lesen, war bisher aber aktiv immer nur bei AndroidPit unterwegs. Da mir dort aber öfters nicht geholfen werden konnte und hier eine deutlich höhere User-Anzahl ist, wurde es Zeit sich hier auch aktiv zu betätigen. Soviel nun zu mir, und nun komm ich dann auch gleich mit einem Problem an.
Mein Problem war/ist, das ich das Keyboard manuell hervorholen musste, da ich es auf einen Button anwenden wollte und nicht auf einem EditText Element. Habe es im Großen und Ganzen auch geschafft, allerdings sind noch einige Probleme offen, welche ich nicht allein gelöst bekomme.
Ich poste euch einfach mal den Quellcode.
Die Variable "view" ist hier die Activity wo der Button drauf liegt.
Meine letzten Probleme sind wie folgt.
1) Wenn ich die Tastatur schließe indem ich auf den Zurück-Button (Hardware-Button), greift keine der Listener so das ich meine Plausibilitätsprüfungen nicht setzen kann. Ich habe auch schon versucht die Methode "onBackPressed" der Activity zu überschreiben, allerdings greift diese auch erst, wenn ich auf "Back" drücke während die Activity Selectiert ist und die Tastatur schon weg ist. Gibt es hier eine Möglichkeit?
2) Wenn die Tastatur aufgerufen wird, verschiebt sich mein ganzes Layout und das obwohl ich in der Manifest bei der Activity "android:windowSoftInputMode="stateHidden|adjustPan"" angegeben habe, was bisher immer funktioniert hat. Hat hier einer eine Idee woran das liegen könnte?
So, das war nun genug Text, ich hoffe irgendwer ließt das ganze überhaupt und kann mir helfen. Ich glaube das Arbeiten mit dem Keyboard ist bisher das komplizierteste was ich bisher gemacht habe obwohl man glaubt es könne doch nicht so schwer sein. Da war das zusammen basteln der ganzen Custom Widgets echt angenehmer. Liegt aber wohl auch daran weil dieser Teil echt mies bis garnicht dokumentiert ist. =/
Ich bin hier schon öfter ab und an mal am lesen, war bisher aber aktiv immer nur bei AndroidPit unterwegs. Da mir dort aber öfters nicht geholfen werden konnte und hier eine deutlich höhere User-Anzahl ist, wurde es Zeit sich hier auch aktiv zu betätigen. Soviel nun zu mir, und nun komm ich dann auch gleich mit einem Problem an.
Mein Problem war/ist, das ich das Keyboard manuell hervorholen musste, da ich es auf einen Button anwenden wollte und nicht auf einem EditText Element. Habe es im Großen und Ganzen auch geschafft, allerdings sind noch einige Probleme offen, welche ich nicht allein gelöst bekomme.
Ich poste euch einfach mal den Quellcode.
Die Variable "view" ist hier die Activity wo der Button drauf liegt.
Code:
// Wichtig, da sonst die Tastatur nicht angezeigt wird
view.getAnzahlButton().setFocusable(true);
view.getAnzahlButton().setFocusableInTouchMode(true);
view.getAnzahlButton().setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
// Funktion damit bei Klick auf dem Button die Tastatur angezeigt wird
view.getAnzahlButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager m = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.showSoftInput(view.getAnzahlButton(), 0);
}
});
// Um einzelnde Zeichen auf dem Button zu löschen
view.getAnzahlButton().setKeyListener(new DigitsKeyListener() {
@Override
public boolean onKeyDown(View v, Editable content, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DEL && view.getAnzahlButton().getText().length() > 0) {
view.getAnzahlButton().setText(view.getAnzahlButton().getText().subSequence(0, view.getAnzahlButton().getText().length() - 1));
return false;
}
return super.onKeyDown(v, content, keyCode, event);
}
});
// Um Tastatur bei Klick auf OK zu schließen und Plausibilitätsprüfung
view.getAnzahlButton().setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
InputMethodManager m = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.hideSoftInputFromWindow(view.getAnzahlButton().getWindowToken(), 0);
if(view.getAnzahlButton().getText().length() <= 0 ||
(view.getAnzahlButton().getText().length() > 0 &&
Integer.valueOf(view.getAnzahlButton().getText().toString()) <= 0)) {
view.getAnzahlButton().setText("1");
}
}
return false;
}
});
1) Wenn ich die Tastatur schließe indem ich auf den Zurück-Button (Hardware-Button), greift keine der Listener so das ich meine Plausibilitätsprüfungen nicht setzen kann. Ich habe auch schon versucht die Methode "onBackPressed" der Activity zu überschreiben, allerdings greift diese auch erst, wenn ich auf "Back" drücke während die Activity Selectiert ist und die Tastatur schon weg ist. Gibt es hier eine Möglichkeit?
2) Wenn die Tastatur aufgerufen wird, verschiebt sich mein ganzes Layout und das obwohl ich in der Manifest bei der Activity "android:windowSoftInputMode="stateHidden|adjustPan"" angegeben habe, was bisher immer funktioniert hat. Hat hier einer eine Idee woran das liegen könnte?
So, das war nun genug Text, ich hoffe irgendwer ließt das ganze überhaupt und kann mir helfen. Ich glaube das Arbeiten mit dem Keyboard ist bisher das komplizierteste was ich bisher gemacht habe obwohl man glaubt es könne doch nicht so schwer sein. Da war das zusammen basteln der ganzen Custom Widgets echt angenehmer. Liegt aber wohl auch daran weil dieser Teil echt mies bis garnicht dokumentiert ist. =/