Android: Möglichkeit ein Multiline EditText ohne Soft Keyboard zu verwenden

darktrym

Fahnenträger
Hallo ich versuch' mich zum 2. Mal an der kruden Programmierung von Android Smartphones mittels Googles ADT.

Getestet unter Android 2.2(recht gut verbreitet):

Frage:
Gibt's denn keine Möglichkeit ein Multiline EditText ohne Soft Keyboard zu verwenden?

Scenario:
Benutzer gibt mittels def. Buttons Zeichen in einem Multiline EditText Feld ein. Der Cursor soll weiterhin frei positioniert werden können mittels Touch nur soll keine Software Tastatur angezeigt werden.
Was geht ist es den Input-Type auf None zu setzen, keine Tastatur aber auch kein Multiline mehr.
 
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(((EditText) findViewById(R.id.outputfield)).getWindowToken(), 0);

Keine Auswirkung.

Und ja, Python ist auch toll.
 
Das Problem ist, dass nur folgende Zeile
((EditText) findViewById(R.id.outputfield)).setInputType(InputType.TYPE_NULL);
Abhilfe schafft aber gleichzeitig mein EditText zu einem OneLiner degradiert. Es gibt Hinweise, dass es sich hier um einen 3 Jahre alten Bug handelt, Soft Keyboard nicht deaktivierbar.

Ich habe mal das Archiv hinzugefügt.
 

Anhänge

  • Brainfuck_Android.zip
    64,8 KB · Aufrufe: 338
Zuletzt bearbeitet:
Geht es dir nur um den Cursor? Oder reicht das ueblichen Markieren mit den zwei Selektoren?

Falls letzteres reicht, dann kannst Du auch eine TextView nehmen und ein Spannable setzen (http://developer.android.com/reference/android/text/Spannable.html).

Aber es geht bei mir mit:
Code:
        // disable soft keyboard
        ((EditText) findViewById(R.id.outputfield)).setInputType(InputType.TYPE_NULL);
        ((EditText) findViewById(R.id.outputfield)).setSingleLine(false);

Scheint so, als ob das Property aus dem XML-File da ignoriert wird.
 

Anhänge

  • android.png
    android.png
    161,5 KB · Aufrufe: 458
Zuletzt bearbeitet:
Danke dir, das war's.

Noch eine kleine Frage, ich benötige blockierendes/modales UI bei der Eingabe. Aber wenn ich den Haupthread in Busy-Waiting-Loop schicke, wird auch der (Alert-)Dialog nicht weiter ausgeführt. Eine Idee wie man das bei Android löst?
 
Danke dir, das war's.

Noch eine kleine Frage, ich benötige blockierendes/modales UI bei der Eingabe. Aber wenn ich den Haupthread in Busy-Waiting-Loop schicke, wird auch der (Alert-)Dialog nicht weiter ausgeführt. Eine Idee wie man das bei Android löst?

Phew, ich mach das auch erst seit ein paar Tagen ;)

Was mir dazu spontan einfaellt: den Alert-Dialog als AsyncTask[0] oder neuen Thread[1] (Runnable) starten.

[0]: http://developer.android.com/reference/android/os/AsyncTask.html
[1]: http://developer.android.com/reference/java/lang/Runnable.html

EDIT: Auf Stackoverflow gerade folgenden Schnippsel gefunden:

Code:
YourActivity.this.runOnUiThread(new Runnable() {
    public void run() {
        alertDialog.show();
    }
});

Das ist wohl einfacher als einen AsyncTask zu benutzen in diesem Fall.
 
Nach einer längeren Recherche: Dialoge sind in Android IMMER modal und asynchron. Eine Lösung wäre also ein neuer Intent zur Eingabe. Das will ich zum. jetzt noch vermeiden.
2. Variante Command Design Pattern, keine Ahnung wie und ob das in meinem Fall funktionieren kann.
 
Zurück
Oben