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

Dieses Thema im Forum "Programmieren" wurde erstellt von darktrym, 7 März 2012.

  1. darktrym

    darktrym Letzter seiner Art

    Registriert seit:
    21 August 2006
    Beiträge:
    947
    Ort:
    Gera, Thüringisches Vogtland
    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.
  2. lockdoc

    lockdoc Active Member

    Registriert seit:
    3 Februar 2005
    Beiträge:
    1.509
    ich habs grad nicht vor mir, aber evtl. geht es hiermit
    Code:
    myInputMethodManager.[B]hideSoftInputFromWindow[/B](...)
    
    Und jetzt Java??? :D
  3. darktrym

    darktrym Letzter seiner Art

    Registriert seit:
    21 August 2006
    Beiträge:
    947
    Ort:
    Gera, Thüringisches Vogtland
    Keine Auswirkung.

    Und ja, Python ist auch toll.
  4. lockdoc

    lockdoc Active Member

    Registriert seit:
    3 Februar 2005
    Beiträge:
    1.509
  5. unull

    unull Nervensäge

    Registriert seit:
    28 Februar 2005
    Beiträge:
    147
    Ort:
    ::1
    Code:
    <EditText android:id="@+id/blubb"
    android:singleLine="false"
    ...
    />
    
    Geht das?
  6. darktrym

    darktrym Letzter seiner Art

    Registriert seit:
    21 August 2006
    Beiträge:
    947
    Ort:
    Gera, Thüringisches Vogtland
    Das Problem ist, dass nur folgende Zeile
    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:

    Zuletzt bearbeitet: 7 März 2012
  7. unull

    unull Nervensäge

    Registriert seit:
    28 Februar 2005
    Beiträge:
    147
    Ort:
    ::1
    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:

    Zuletzt bearbeitet: 7 März 2012
  8. darktrym

    darktrym Letzter seiner Art

    Registriert seit:
    21 August 2006
    Beiträge:
    947
    Ort:
    Gera, Thüringisches Vogtland
    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?
  9. unull

    unull Nervensäge

    Registriert seit:
    28 Februar 2005
    Beiträge:
    147
    Ort:
    ::1
    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.
  10. darktrym

    darktrym Letzter seiner Art

    Registriert seit:
    21 August 2006
    Beiträge:
    947
    Ort:
    Gera, Thüringisches Vogtland
    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.