Ik heb de andere vragen gelezen die hierover gaan en ze werken allemaal voor mijn lay-outs, behalvevoor de allereerste die is gemaakt.
Op dit moment staat dit bovenaan mijn onCreate
-methode:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
^ Dat zorgt ervoor dat het toetsenbord in ieder geval niet verschijnt bij het opstarten, maar de EditText
is nog steeds gefocust.
Dit is de XML
voor mijn 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>
Zo ziet het eruit als ik mijn activiteit ter sprake breng:
Het probleem is dat bij sommige telefoons, wanneer een EditText
op deze manier is gefocust, ze er niet in kunnen schrijven. Ik wil dat het nietfocust.
Wat ik heb gedaan, werkt voor de volgende lay-outs die naar voren zijn gebracht, in die zin dat de EditTexts
niet zijn gericht op en er meer als volgt uit zou zien:
Merk echter op dat het dezelfde lay-out is. Dit is het scherm nadat de gebruiker naar dit scherm is teruggebracht, wat zou aangeven dat er niets mis is met de XML
omdat dit dezelfde XML
is, maar het probleem is dat de EditText
is alleen gericht op wanneer de activiteit is gemaakt.
Ik heb onderzoek gedaan en alle andere vragen helpen me hier niet bij (gelukkig hielpen ze er wel voor dat het toetsenbord niet verscheen). Hoe kan ik ervoor zorgen dat de EditText
bij het opstarten eruitziet als de tweede schermafbeelding, in plaats van de eerste?
Antwoord 1, autoriteit 100%
U kunt de eigenschap van Lay-out instellen zoals android:descendantFocusability="beforeDescendants"
en android:focusableInTouchMode="true"
Voorbeeld:
<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>
Kan deze nuttig zijn;)
Antwoord 2, autoriteit 6%
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;
}
});
stel focusable false in xml in en stel het in op true via de code
Antwoord 3, autoriteit 4%
In je main_layout
voeg deze 2 regels toe:
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
voorbeeld:
<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>
Antwoord 4
Voeg dit toe in onCreate()
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
of in onCreateView()
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Antwoord 5
de beste oplossing is hier:
https://stackoverflow.com/a/45139132/3172843
de juiste en eenvoudigeoplossing is om setFocusable false en setFocusableInTouchMode true. dus de EditText krijgt alleen focus wanneer de gebruiker die EditText aanraakt
android:focusable="false"
android:focusableInTouchMode="true"
Antwoord 6
XML-code
<EditText
android:imeOptions="flagNoExtractUi"
android:focusable="false"
/>
Java-code in onClickListerner
mEdtEnterPhoneNumber.setFocusable(true);
mEdtEnterPhoneNumber.setFocusableInTouchMode(true);
Antwoord 7
U kunt dit programmatisch doen. gebruik editText.setEnabled(false)
in uw onStart()
methode van uw activiteit (niet in onCreate() – omdat dit een methode is voor het initialiseren van GUI-componenten)
Antwoord 8
Het is mogelijk om android:focusable="false"
te gebruiken om het uit te schakelen, maar als dat om de een of andere reden niet werkt, dan kun je eenvoudig een LinearLayout
plaatsen en het zal de focus nemen zonder uw lay-out te verstoren.
OPMERKING: Eclipse geeft u een foutmelding dat uw LinearLayout
nutteloos is omdat het geen inhoud heeft. Je zou het zonder problemen moeten kunnen negeren.
Bijvoorbeeld:
<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>
Antwoord 9
De gemakkelijkste manier is om
. toe te voegen
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
in de activiteitstag van het Manifest.xml-bestand
Antwoord 10
1) Het is het eenvoudigst, open het manifest en plaats de volgende code tussen de activiteitstag:
android:windowSoftInputMode="stateHidden"
2) Zet deze attributen in de bovenliggende lay-out
android:focusable="true"
android:focusableInTouchMode="true"
Antwoord 11
Kopieer en plak in Manifest de onderstaande code.
<activity
android:name=".LoginActivity"
android:windowSoftInputMode="stateAlwaysHidden"/>
Antwoord 12
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateAlwaysHidden" />
android:windowSoftInputMode=”stateAlwaysHidden”
voeg deze regel toe aan de activiteitstag van het Manifest.xml-bestand. Wanneer u op EditText klikt, wordt het toetsenbord scherpgesteld.
Antwoord 13
gebruik android:focusable="false"
om scherpstelling uit te schakelen
<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>