In meiner App ist die erste Ansicht aller meiner Bildschirme ein EditText. Jedes Mal, wenn ich zu einem Bildschirm gehe, wird die Bildschirmtastatur angezeigt. Wie kann ich dieses Popup deaktivieren und aktivieren, wenn ich manuell auf den EditText klicke?
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
eT.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
}
}
});
XML-Code:
<ImageView
android:id="@+id/feedPageLogo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_feed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/go" />
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_feed"
android:layout_toRightOf="@id/feedPageLogo"
android:hint="@string/search" />
<TextView
android:id="@+id/feedLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/feedPageLogo"
android:gravity="center_vertical|center_horizontal"
android:text="@string/feed"
android:textColor="@color/white" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsLayout_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/iwant"
android:textColor="@color/black" />
<Button
android:id="@+id/shareButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/share"
android:textColor="@color/black" />
<Button
android:id="@+id/profileButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/profile"
android:textColor="@color/black" />
</LinearLayout>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/feedListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/ButtonsLayout_feed"
android:layout_below="@id/feedLabel"
android:textSize="15dp" >
</ListView>
In der dritten Ansicht (EditText) liegt der Fokus.
android
android-edittext
Stubenfliege
quelle
quelle
Antworten:
Die beste Lösung liegt in der Project Manifest-Datei (AndroidManifest.xml). Fügen Sie dem
activity
Konstrukt das folgende Attribut hinzuBeispiel:
Beschreibung:
Eingeführt in:
Link zu den Dokumenten
Hinweis: Die hier festgelegten Werte (außer "stateUnspecified" und "adjustUnspecified") überschreiben die im Thema festgelegten Werte.
quelle
Sie müssen über dem EditText eine Ansicht erstellen, die einen "falschen" Fokus hat:
Etwas wie :
In diesem Fall habe ich ein LinearLayout verwendet, um den Fokus anzufordern. Hoffe das hilft.
Das hat perfekt funktioniert ... dank Zaggo0
quelle
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
Jetzt können Sie jede beliebige benutzerdefinierte Tastatur verwenden.
quelle
Die Leute haben hier viele großartige Lösungen vorgeschlagen, aber ich habe diese einfache Technik mit meinem EditText verwendet (nichts in Java und AnroidManifest.xml ist erforderlich). Setzen Sie einfach Ihren fokussierbaren und fokussierbarenInTouchMode direkt in EditText auf false.
Ich möchte dieses Bearbeitungsfeld in der App-Sperraktivität verwenden, in der ich den Benutzer auffordere, die PIN einzugeben, und mein benutzerdefiniertes PIN-Pad anzeigen möchte. Getestet mit minSdk = 8 und maxSdk = 23 unter Android Studio 2.1
quelle
Fügen Sie den folgenden Code zu Ihrer Aktivitätsklasse hinzu.
Die Tastatur wird angezeigt, wenn der Benutzer auf den EditText klickt
quelle
Sie können den folgenden Code zum Deaktivieren der OnScreen-Tastatur verwenden.
quelle
Zwei einfache Lösungen:
Die erste Lösung wird unterhalb der Codezeile in der XML-Manifestdatei hinzugefügt. Fügen Sie in der Manifest-Datei (AndroidManifest.xml) das folgende Attribut zum Aktivitätskonstrukt hinzu
android: windowSoftInputMode = "stateHidden"
Beispiel:
Die zweite Lösung ist das Hinzufügen der folgenden Codezeile in der Aktivität
Wir können jede der oben genannten Lösungen verwenden. Vielen Dank
quelle
Deklarieren Sie die globale Variable für InputMethodManager:
Definieren Sie es unter onCreate ():
Setzen Sie den onClickListener auf diesen Bearbeitungstext in oncreate ():
Das wird funktionieren.
quelle
Verwenden Sie den folgenden Code, schreiben Sie ihn unter
onCreate()
quelle
versuchen Sie es ....... ich löse dieses Problem mit Code: -
Sie können standardmäßig nichts für irgendetwas eingeben, aber Sie können eine beliebige Zeichenfolge festlegen.
Versuch es
quelle
Danke @AB für die gute Lösung
In diesem Fall, wenn Sie die Tastatur im Text bearbeiten deaktivieren, fügen Sie einfach android: focusableInTouchMode = "false" in der edittext-Tagline hinzu.
arbeite für mich in Android Studio 3.0.1 minsdk 16, maxsdk26
quelle
A.B
Antwort? Oder ist es eine Antwort auf die ursprüngliche Frage? Wenn dies ein Kommentar zurA.B
Antwort ist, sollten Sie die von StackOverflow bereitgestellte Kommentaroption verwenden und diese Antwort auf die ursprüngliche Frage löschen.Versuchen Sie es damit:
Zum Schließen können Sie Folgendes verwenden:
Versuchen Sie es so in Ihrem Code:
quelle
Nun, ich hatte das gleiche Problem und habe mich nur mit fokussierbar in der XML-Datei befasst.
Sie suchen wahrscheinlich auch nach Sicherheit. Dies wird auch dabei helfen.
quelle
Verwenden Sie den folgenden Code in Ihrer
onCreate()
Methode:quelle
Das einzige, was Sie tun müssen, ist das Hinzufügen
android:focusableInTouchMode="false"
zum EditText in XML und das ist alles. (Wenn jemand noch wissen muss, wie man das auf einfache Weise macht)quelle
Für Xamarin-Benutzer:
quelle
quelle
Wenn Sie Xamarin verwenden, können Sie dies hinzufügen
Danach können Sie diese Zeile in der OnCreate () -Methode hinzufügen
Wenn das Zielgerät den obigen Code nicht unterstützt, können Sie den folgenden Code im EditText-Klickereignis verwenden
quelle
Ich fand, dass das folgende Muster für mich in Code gut funktioniert, in dem ich ein Dialogfeld anzeigen möchte, um die Eingabe zu erhalten (z. B. ist die im Textfeld angezeigte Zeichenfolge das Ergebnis einer Auswahl aus einer Liste von Kontrollkästchen in einem Dialogfeld und nicht über die Tastatur eingegebener Text).
Erste Klicks im Textfeld führen zu einer Fokusänderung, ein wiederholtes Klicken zu einem Klickereignis. Also überschreibe ich beide (hier überarbeite ich den Code nicht, um zu veranschaulichen, dass beide Handler dasselbe tun):
quelle
In einer Android-App, die ich baute, hatte ich drei
EditText
s in einerLinearLayout
horizontal angeordneten. Ich musste verhindern, dass die Softtastatur beim Laden des Fragments angezeigt wurde. Neben Einstellungfocusable
undfocusableInTouchMode
true auf dieLinearLayout
musste ich SatzdescendantFocusability
zublocksDescendants
. InonCreate
rief ichrequestFocus
dieLinearLayout
. Dadurch wurde verhindert, dass die Tastatur beim Erstellen des Fragments angezeigt wird.Layout -
In
onCreate
-mTextSelectorContainer.requestFocus();
quelle
Wenn noch jemand nach der einfachsten Lösung sucht, setzen Sie das folgende Attribut in
true
Ihrem übergeordneten Layout aufBeispiel:
quelle
Verwenden Sie diese Option, um EditText zu aktivieren und zu deaktivieren.
quelle
Versuchen Sie diese Antwort,
Hinweis: Nur für API 11+
quelle
quelle
Einfach, entfernen Sie einfach das Tag "" aus der XML-Datei
quelle
für jede Textansicht bei Ihrer Aktivität (oder erstellen Sie eine gefälschte leere Textansicht mit android: layout_width = "0dp" android: layout_height = "0dp") und fügen Sie für diese Textansicht als nächstes hinzu: android: textIsSelectable = "true"
quelle
Hinzufügen Eigenschaft Nur müssen
android:focusable="false"
insbesondereEditText
im Layout xml. Dann können Sie einen Klicklistener fürEditText
ohne Tastatur-Popup schreiben .quelle
Das Problem kann wie folgt sortiert werden: Keine Notwendigkeit, editText inputType auf Werte zu setzen. Fügen Sie einfach die folgende Zeile hinzu: editText.setTextIsSelectable (true);
quelle
inputType
würde. Aber es sieht so aus, als wäre es gut zu wissen, ob ich mich für diese andere Antwort entschieden habe. Selbst wenn Sie darauf bestehen, dies als eigene Antwort beizubehalten, sollten Sie trotzdem einen Kommentar hinterlassen.