Ich habe die anderen Fragen gelesen, die dies diskutieren, und alle funktionieren für meine Layouts, mit Ausnahme der allerersten, die erstellt wurden.
Im Moment steht dies ganz oben auf meiner onCreate
Methode:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
^ Das macht es so, dass zumindest die Tastatur beim Start nicht auftaucht, aber die EditText
ist immer noch fokussiert.
Dies ist das XML
für meine EditText
:
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>
So sieht es aus, wenn ich meine Tätigkeit aufbringe:
Das Problem ist, dass einige Telefone, wenn sie EditText
so fokussiert sind, nicht darin schreiben können. Ich möchte, dass es sich nicht konzentriert.
Was ich getan habe, funktioniert für die nächsten Layouts, die darin erwähnt werden, dass sie EditTexts
nicht fokussiert sind und eher so aussehen würden:
Beachten Sie jedoch, dass es sich um dasselbe Layout handelt. Dies ist der Bildschirm, nachdem der Benutzer zu diesem Bildschirm zurückgekehrt ist, was nichts Falsches an dem anzeigen würde, XML
da dies derselbe ist XML
, aber das Problem ist, dass der EditText
nur beim Erstellen der Aktivität im Mittelpunkt steht.
Ich habe recherchiert und alle anderen Fragen helfen mir dabei nicht (sie haben jedoch geholfen, dass die Tastatur zum Glück nicht angezeigt wurde). Wie kann ich es schaffen, dass der EditText
Start beim Start eher wie der zweite als der erste Screenshot aussieht?
quelle
android:focusable="false"
inEditText
?android:focusableInTouchMode="true"
zu meinem übergeordneten Layout funktioniert für mich.Antworten:
Sie können die Eigenschaft von Layout wie
android:descendantFocusability="beforeDescendants"
und festlegenandroid:focusableInTouchMode="true"
Beispiel:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainLayout" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" > <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> </RelativeLayout>
Möge dies hilfreich sein;)
quelle
XML-Code:
<EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:focusable="false" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText>
Java-Code:
EditText edPwd = (EditText)findViewById(R.id.password); edtPwd.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.setFocusable(true); v.setFocusableInTouchMode(true); return false; } });
quelle
actionNext
vollständig fehlschlägt.Fügen Sie in Ihrem main_layout diese 2 Zeilen hinzu:
android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"
Beispiel:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"> *YOUR LAYOUT CODE* </RelativeLayout>
quelle
Fügen Sie dies in onCreate () hinzu
oder in onCreateView ()
quelle
Die beste Lösung finden Sie hier: https://stackoverflow.com/a/45139132/3172843
Die richtige und einfache Lösung besteht darin, setFocusable false und setFocusableInTouchMode true festzulegen . Daher wird der EditText nur dann fokussiert, wenn der Benutzer diesen EditText berührt
android:focusable="false" android:focusableInTouchMode="true"
quelle
XML-Code
<EditText android:imeOptions="flagNoExtractUi" android:focusable="false" />
Java-Code in onClickListerner
mEdtEnterPhoneNumber.setFocusable(true); mEdtEnterPhoneNumber.setFocusableInTouchMode(true);
quelle
Sie können dies programmgesteuert tun. Verwenden Sie
editText.setEnabled(false)
in IhreronStart()
Methode Ihre Aktivität (nicht in onCreate () - da dies eine Methode zum Initialisieren von GUI-Komponenten ist.)quelle
Es ist möglich, es
android:focusable="false"
zu deaktivieren, aber wenn dies aus irgendeinem Grund nicht funktioniert, können Sie einfach ein setzenLinearLayout
und es wird den Fokus übernehmen, ohne Ihr Layout zu stören.HINWEIS: Eclipse gibt eine Fehlermeldung aus, dass Ihr
LinearLayout
Benutzer unbrauchbar ist, da er keinen Inhalt enthält. Sie sollten in der Lage sein, es ohne Probleme zu ignorieren.Zum Beispiel:
<LinearLayout android:focusable="true" android:focusableInTouchMode="false" android:layout_width="0dp" android:layout_height="0dp" /> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> </LinearLayout>
quelle
Der einfachste Weg ist das Hinzufügen
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
im Aktivitäts-Tag der Datei Manifest.xml
quelle
1) Es ist am einfachsten, öffnen Sie das Manifest und setzen Sie den folgenden Code zwischen das Aktivitäts-Tag:
android:windowSoftInputMode="stateHidden"
2) Fügen Sie diese Attribute in das übergeordnete Layout ein
android:focusable="true" android:focusableInTouchMode="true"
quelle
Kopieren Sie im Manifest den folgenden Code und fügen Sie ihn ein.
<activity android:name=".LoginActivity" android:windowSoftInputMode="stateAlwaysHidden"/>
quelle
<activity android:name=".MainActivity" android:windowSoftInputMode="stateAlwaysHidden" />
Fügen Sie diese Zeile in das Aktivitäts-Tag der Datei Manifest.xml ein. Wenn Sie auf den EditText klicken, wird die Tastatur scharfgestellt.
quelle
Verwendung
android:focusable="false"
zur Fokussierung disable<EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" android:focusable="false" > </EditText>
quelle