Eu tenho uma atividade com uma Edit Text
entrada. Quando a atividade é inicializada, o teclado do Android é mostrado. Como o teclado pode permanecer oculto até que o usuário foque a entrada?
android:windowSoftInputMode="adjustPan"
?
Eu tenho uma atividade com uma Edit Text
entrada. Quando a atividade é inicializada, o teclado do Android é mostrado. Como o teclado pode permanecer oculto até que o usuário foque a entrada?
android:windowSoftInputMode="adjustPan"
?
Respostas:
Eu acho que o seguinte pode funcionar
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Eu já usei para esse tipo de coisa antes.
EditText
? :) Isso é para ocultar o teclado quando a atividade começar, que contém #EditText
Experimente também -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Caso contrário, declare na atividade do arquivo de manifesto -
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
Se você já estiver usando android:windowSoftInputMode
um valor como adjustResize
ou adjustPan
, poderá combinar dois valores como:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Isso ocultará o teclado sempre que apropriado, mas moverá a exibição da atividade caso o teclado precise ser mostrado.
Esconda-o para todas as atividades usando o tema
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
definir o tema
<application android:theme="@style/MyTheme">
Adicione essas duas propriedades ao layout pai (ex: Layout linear, Layout relativo)
android:focusable="false"
android:focusableInTouchMode="false"
Ele fará o truque :)
true
funcionar, conforme a resposta de Jack T. Houve uma mudança de comportamento nas versões recentes?
false
funcionar, pois a idéia é desviar o foco das caixas EditText.
Tente declará-lo no arquivo manifesto
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Basta adicionar no AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
Você também pode escrever essas linhas de código no layout pai direto do arquivo de layout .xml no qual você tem o "problema":
android:focusable="true"
android:focusableInTouchMode="true"
Por exemplo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
EDIT:
Exemplo se o EditText estiver contido em outro layout:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
A chave é garantir que o EditText não seja diretamente focável.
Tchau! ;-)
Melhor solução para mim, cole sua turma
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
Função para ocultar o teclado.
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
Oculte o teclado no arquivo AndroidManifext.xml.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
Para expandir a resposta aceita por @Lucas:
Chame isso de sua atividade em um dos eventos do ciclo inicial:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Você pode tentar este atributo exclusivo definido para cada elemento
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
O teclado não será exibido enquanto o elemento estiver em foco
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
basta adicionar isso em sua atividade:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>