valores - El ajuste de Android no funciona después de la primera vez
restablecer ajustes de red android (8)
Aquí está el código que estaba usando originalmente que entró en este problema:
<EditText
android:layout_width="250dp"
android:layout_height="wrap_content"
android:gravity="center" />
Cuando eliminé la línea de gravedad central de EditText, la panorámica funcionó:
android:gravity="center"
Lo resolví envolviendo EditText en FrameLayout y centrando todo el EditText en FrameLayout. El único problema que causa es que EditText tendrá al menos el ancho del texto de aviso, por lo que los primeros caracteres / palabras escritos no estarán centrados. Esto estuvo bien para mí, pero su kilometraje puede variar :)
<FrameLayout
android:layout_width="250dp"
android:layout_height="wrap_content">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
EDIT: esta solución se rompe si el usuario hace clic en la última palabra en el texto de edición. Ahora estoy usando la solución onKeyPreIme
Mi problema: a partir de la segunda vez que se muestra el teclado del software en la pantalla, oculta por completo mi EditText.
Attribute android: windowSoftInputMode = "adjustPan" se ha especificado en AndroidManifest.xml, pero funciona solo la primera vez.
Tengo el siguiente diseño:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="464dp"
android:gravity="top"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:background="#E3E3E2"
android:gravity="top" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/addListText"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="10"
android:contentDescription="@string/addItemContentDescription"
android:gravity="bottom|center_horizontal"
android:inputType="textLongMessage"
android:textColor="#E3E3E2"
android:visibility="gone" />
<ImageButton
android:id="@+id/addTextListButton"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:layout_gravity="right"
android:background="@android:color/transparent"
android:contentDescription="@string/addItemButton"
android:scaleType="fitCenter"
android:src="@drawable/plus_add"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:gravity="bottom|center_horizontal"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<ImageButton
android:id="@+id/syncListsButton"
android:layout_width="64dp"
android:layout_height="match_parent"
android:src="@android:drawable/ic_popup_sync" />
<ImageButton
android:id="@+id/showOrHide"
android:layout_width="64dp"
android:layout_height="match_parent" />
<ImageButton
android:id="@+id/delListButton"
android:layout_width="64dp"
android:layout_height="match_parent"
android:src="@android:drawable/ic_menu_delete" />
</LinearLayout>
</LinearLayout>
El botón "showOrHide" muestra / oculta el combo "addListText" / "addTextListButton".
Cuando se muestra EditText por primera vez y lo toco, el teclado virtual aparece en la pantalla y el combo "addListText" / "addTextListButton" se panoramiza correctamente. Cuando oculto el teclado y luego lo vuelvo a mostrar, ¡el teclado cubre completamente mi caja de edición addListText!
Alguna idea sobre lo que está pasando? Lo estoy probando en Android 4.2.2.
¡Por favor ayuda! Gracias :-)
editar: ¡También intenté poner el primer LinearLayout dentro de ScrollView pero no funciona!
Después de probar muchas soluciones en el archivo Manifest, lo resolví por debajo, ajustar Pan con el diseño relativo no funciona,
Tu Diseño padre debe ser LinearLayout
Espera que esto ahorre algo de tiempo para las personas.
El problema que está experimentando ahora es un error de plataforma conocido como se describe aquí: code.google.com/p/android/issues/detail?id=182191
La solución no está respaldada y, por lo tanto, no tendrá efecto hasta Android N. Hasta que Android N sea su SDK mínimo, la siguiente solución es una solución alternativa.
Puede crear una clase personalizada que extienda EditText y anular el método onKeyPreIme (int keyCode, KeyEvent event) de esta manera:
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
clearFocus();
}
return super.onKeyPreIme(keyCode, event);
}
También debe asegurarse de que un diseño de nivel superior tenga la capacidad de enfocarse para que el enfoque de EditText se pueda borrar con éxito. Los siguientes atributos pueden funcionar para usted:
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
Ahora cuando se presiona la tecla Atrás, EditText pierde el foco. Luego, cuando toque el botón nuevamente, adjustpan funcionará según lo previsto. (Publicar como una respuesta ya que la edición fue rechazada).
En EditText android:layout_gravity="center"
Crea este tipo de problema. Si desea que el texto se convierta en centro, puede hacerlo de esta manera
Paso 1: para el diseño
<LinearLayout
android:id="@+id/linerPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imageView2"
android:gravity="center">
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:background="@null"
android:hint="*****"
android:layout_marginLeft="-40dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:inputType="textPassword"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="18sp" />
</LinearLayout>
paso 2: algo por programaticamente
linerUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mETUserName, 0);
mETUserName.requestFocus();
}
});
Finalmente funciona muy bien. Encontré esta solución para ajustar softKeyboard
Esto puede parecer un poco tonto, pero me encontré con este problema cuando establecí la gravedad de la propiedad de mi EditText en ''center_horizontal'' o ''center''. El mismo problema ocurre cuando se usa textAlignment ''center''. Quítelo y no se encontrará con el problema de que el teclado oculte EditText la segunda vez (y las siguientes) cuando salga el teclado.
Para mí, anular onKeyPreIme
no funciona. Por lo tanto, modifico dispatchKeyEventPreIme
lugar.
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
clearFocus();
}
return super.dispatchKeyEventPreIme(event);
}
Por lo general, la bandeja de ajuste no funciona después de la primera vez que presionamos el botón Atrás, intente hacer de la siguiente manera: - (se puede implementar para EditText, AutoCompleteTextView o cualquier otra vista en la que se comporte mal)
@Override
public void onBackPressed() {
editText.clearFocus();
editText.setCursorVisible(false);
}
Espero que ayude a alguien
Subclassed EditText y reemplaza el método onKeyPreIme (int keyCode, KeyEvent event) como este:
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
clearFocus();
}
return super.onKeyPreIme(keyCode, event);
}
Ahora cuando se presiona la tecla Atrás, EditText perdió el foco. Luego, al tocarlo de nuevo, ajustapan funcionará.