| |||||||
Das Thema "SoftInput Keyboard manuell hervorholen um Text im Button zu ändern." befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Benutzer Registriert seit: 22.11.2011
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
| 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|adjustPa n"" 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. =/ |
| | |
| | #2 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 14.08.2009
Beiträge: 354
Abgegebene Danke: 23
Erhielt 49 Danke für 43 Beiträge
|
Abgesehen von deinen Problemen halte ich dein Vorhaben nicht für gut. Du verlierst dadurch recht viele Funktionen die man beim bearbeiten hat. Ich würde nie ein Text eines Buttons direkt verändern über die Tastatur! Besser wäre ein Dialog wo ein Textfeld drin ist wo man auch den Text makieren kann, copy & paste funktioniert und man ohne Probleme sein Text eingeben kann. Gruß Michael
__________________ http://android.fungamer.net/ |
| | |
| | #3 (permalink) |
| Neuer Benutzer Registriert seit: 22.11.2011
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Das will ich auch garnicht bestreiten und ich gebe dir vollkommen recht. Ich würde es auch genauso machen wie du sagtest, allerdings wird mir das leider so vorgegeben weswegen ich hier nichts ändern darf. =/ Allerings handelt es sich hier auch nur um die Eingabe von max. 3 Zahlen wo das fehlen von Copy&Paste hoffentlich kein all zu großes defizit dastellt. Nichts desto trotz wäre der Dialog trotzdem die bessere Lösung. |
| | |
| | #4 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 14.08.2009
Beiträge: 354
Abgegebene Danke: 23
Erhielt 49 Danke für 43 Beiträge
|
Du musst deine Kunden auch ein wenig erziehen. Wenn man selber merkt, dass im Konzept Lücken oder nicht optimal überlegt wurde. Sollte man das mit dem Kunden besprechen. So ein Punkt halte ich auf jeden Fall für Besprechungswürdig
__________________ http://android.fungamer.net/ |
| | |
| | #5 (permalink) |
| Neuer Benutzer Registriert seit: 22.11.2011
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hast du wahrscheinlich recht mit. :-) Ich habe es jetzt mit nem Dialog gelöst und muss sagen, dass es in der Tat um einiges komfortabler und angenehmer ist. Schon allein deswegen, weil man von anderen Apps auch gewohnt es, sowas über einen Dialog zu machen. Danke nochmal für die Aufklärung. Vielleicht kann ja trotzdem jemand meine Codeschnippsel da oben gebrauchen da dieser Teil wirklich mies dokumentiert ist. (: |
| | |
| | #6 (permalink) |
| Android-Hilfe.de Mitglied Modell: Acer Iconia A100 Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
|
Vom Standpunkt der Usability ist das sicherlich weniger optimal. Benutzer erwarten dass sich Button wie Button verhalten, und Textfelder wie Textfelder. Das mag ja eine kreative Idee sein, aber den Durchchnittsbenutzer verwirrt das nur.....
__________________ Samsung Galaxy S mit Android 4.03 RC4 ICSSGS Acer Iconia A100 mit Android 3.2 Vodafone 858 smart mit Android 2.2.1 |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Button zur Laufzeit einen Text zuweisen | bjoern4G | Android App Entwicklung | 5 | 04.11.2011 16:29 |
| Neue Apple-Patente: Air-Keyboard sowie Umwandlung eines Gespräches in Text | Wearl | Smalltalk und Offtopic | 4 | 20.05.2011 11:12 |
| Button mit Image und Text | Unicate | Android App Entwicklung | 1 | 12.04.2011 13:33 |
| HTC Keyboard mit Voice-to-Text verfügbar | oclock | Root / Hacking / Modding für HTC Desire | 3 | 17.04.2010 21:17 |
| Neues Keyboard manuell installieren | Flyzer | HTC Magic Forum | 23 | 09.08.2009 21:52 |