android - tapar - ¿Mover los diseños hacia arriba cuando se muestra el teclado suave?
scrollview android studio (12)
Tengo algunos elementos en una RelativeView con el conjunto de atributos de alineación inferior, cuando aparece el teclado virtual los elementos están ocultos por el teclado virtual.
Me gustaría que se muevan hacia arriba para que, si hay suficiente espacio en la pantalla, se muestren sobre el teclado, o para que la sección sobre el teclado se pueda desplazar para que el usuario pueda ver los elementos.
¿Alguna idea sobre cómo abordar esto?
Agregue AndroidManifest.xml para su actividad:
android:windowSoftInputMode="adjustPan|adjustResize"
Aquí está el código de manifiesto completo
<activity
android:name=".activities.MainActivity"
android:windowSoftInputMode="adjustResize"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
En AndroidManifest.xml, no te olvides de configurar:
android:windowSoftInputMode="adjustResize"
y para RelativeLayout dentro de ScrollView, establece:
android:layout_gravity="center" or android:layout_gravity="bottom"
Estara bien
Haga cambios en la actividad de su archivo Manifest como
windowSoftInputMode="adjustResize"
O
Haga cambios en su método onCreate()
en la clase de actividad como
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Hay 3 pasos a seguir para desplazarse por la pantalla.
- Escriba en el archivo de manifiesto para su actividad:
android: windowSoftInputMode = "adjustResize"
- Agregue la siguiente línea en el método oncreate () de su actividad
getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
- Luego, coloque toda su vista en "Scrollview" en un archivo XML como:
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:background="@drawable/bg" android:layout_height="match_parent" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_gravity="center" > <TextView /> ......... <TextView /> <EditText > <requestFocus /> </EditText> <Button /> </RelativeLayout> </ScrollView>
PD No te olvides de agregar android: layout_gravity = "center" en el diseño relativo de los padres.
He encontrado una solución a mis problemas que es bastante similar a la tuya.
Antes que nada, solo tengo un LinearLayout con 2 elementos, un ImageView y un LinearLayout que contiene 2 EditText y un botón, así que necesitaba mantenerlos separados en pantalla completa sin teclado, y cuando aparece el teclado deberían mirar más de cerca.
Así que agregué la vista entre ellos con el atributo de altura en 0dp y peso 1, que me permitió mantener mis vistas separadas una de la otra. y cuando aparece el teclado, ya que no tienen una altura de corrección, simplemente cambian de tamaño y mantienen el aspecto.
Voila! El diseño cambia el tamaño y la distancia entre mis vistas es la misma cuando el teclado está o no presente.
Intenté un método de Diego Ramírez, funciona. En AndroidManifest:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
...
</activity>
En activity_main.xml:
<LinearLayout ...
android:orientation="vertical">
<Space
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<EditText
android:id="@+id/edName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/first_name"
android:inputType="textPersonName" />
<EditText ...>
...
</LinearLayout>
También puede usar este código en el método onCreate()
:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
para la actividad en su método de insertar oncreate debajo de la línea
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
y para fragmentos en su método onCreate
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
problema similar que estaba enfrentando con mi diseño que consiste en vista de desplazamiento dentro. Cada vez que trato de seleccionar texto en EditText, la barra de acciones Copiar / Cortar / Pegar se mueve hacia arriba con el código siguiente, ya que no cambia el tamaño del diseño
android:windowSoftInputMode="adjustPan"
Modificándolo a como abajo
1) AndroidManifest.xml
android:windowSoftInputMode="stateVisible|adjustResize"
2) archivo style.xml, en estilo de actividad
<item name="android:windowActionBarOverlay">true</item>
Funcionó.!!!!!!!!!!!!
si está en fragmentos, entonces tiene que agregar el siguiente código a su onCreate en su actividad, resuelve el problema para mí
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Sí, consulte este artículo en el sitio de desarrolladores de Android que describe cómo se maneja el marco al aparecer el teclado virtual.
El atributo android:windowSoftInputMode
se puede usar para especificar lo que sucede por actividad: si el diseño se redimensiona o si se desplaza, etc.