when touched soft outside force edittext close android android-edittext android-softkeyboard

android - touched - SoftKeyboard que oculta EditText



hide keyboard when touched outside edittext android (4)

Lo que está buscando es el atributo windowSoftInputMode la Actividad. Establece esto en su archivo AndroidManifest.xml y le asigna un valor como:

  • adjustResize : "La ventana principal de la actividad siempre se redimensiona para dejar espacio para el teclado adjustResize en pantalla".

  • adjustPan : "La ventana principal de la actividad no se redimensiona para hacer espacio para el teclado adjustPan . Más bien, el contenido de la ventana se desplaza automáticamente para que el foco actual nunca quede oculto por el teclado y los usuarios siempre puedan ver lo que están escribiendo. Esto generalmente es menos deseable que cambiar el tamaño, ya que el usuario puede necesitar cerrar el teclado virtual para acceder e interactuar con las partes ocultas de la ventana ".

El ajuste de tamaño probablemente funcionará para usted, siempre y cuando envuelva el diseño en un ScrollView. Puede tener efectos negativos si tiene una imagen de mapa de bits en el fondo, ya que también se cambiará de tamaño, en cuyo caso es posible que desee utilizar ajustePan.

<activity android:windowSoftInputMode="adjustResize" />

o

<activity android:windowSoftInputMode="adjustPan" />

Más información está disponible en el enlace de arriba.

Tengo un diseño que usa un texto de edición para permitir a los usuarios buscar en una base de datos y llenar un ListView. El texto de edición está a aproximadamente 2/3 del camino desde la parte superior de la pantalla (posicionado sobre un ImageView y seguido por un texto de introducción).

El problema es que el teclado virtual oculta el EditText, por lo que el usuario no puede ver lo que está escribiendo. (Deshabilité la sugerencia automática.)

He intentado LinearLayout, RelativeLayout, rellenos y diferentes alineaciones / centrados, pero aún no puedo hacer que funcione correctamente. El texto de edición está oculto, se empuja fuera de la parte superior de la pantalla o se "aplasta" y se distorsiona.

Sugerencias ???

Una posible solución es mover el EditText a la parte superior de la pantalla. Sin embargo, esto se desvía del diseño gráfico que me dieron.

Otra posible solución es que el teclado virtual se abra en pantalla completa (aunque no estoy seguro de cómo). Esto aún ocultará el texto de edición, pero luego puedo volver a habilitar la sugerencia automática para que el usuario pueda ver lo que está escribiendo ... más o menos ... porque solo puede ver las sugerencias de lo que está escribiendo.

Aquí está mi último intento. Consulte "introFrame".

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/titleContainer" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="@string/title_string" android:textSize="15sp" android:textColor="#FFFFFF" android:textStyle="bold" android:paddingLeft="5dp" android:layout_height="fill_parent" android:layout_width="wrap_content" /> </LinearLayout> <FrameLayout android:id="@+id/introFrame" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" > <ImageView android:src="@drawable/main_search_image" android:scaleType="center" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingTop="140dp" > <LinearLayout android:id="@+id/introSearchContainer" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" > <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > <EditText android:id="@+id/intro_search_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint=" Enter keyword " android:imeOptions="actionGo" android:inputType="textFilter" android:maxLines="1" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/intro_search_button" android:background="@drawable/custom_button_go" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> <TextView android:text="@string/search_intro" android:textSize="15sp" android:textColor="#FFFFFF" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> </FrameLayout> <LinearLayout android:id="@+id/listContainer" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/itemlist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:cacheColorHint="#00000000" /> <TextView android:text="No data found" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textSize="16sp" android:textColor="#FFFFFF" android:id="@+id/android:empty" /> </LinearLayout> </LinearLayout>


Lo que me ha funcionado es dejar mi LinearLayout de nivel más alto en un scrollView (ScrollView solo puede tener un hijo). Esto permitió que toda la actividad / formulario se desplazara hacia arriba y no saturara el texto de edición en foco.

Primero, pongo en mi actividad:

<activity android:windowSoftInputMode="adjustPan" />

Luego hice la cosa ScrollView de la que estoy hablando:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- STUFF --> </LinearLayout> </ScrollView>


intente darle al texto de edición un layout_weight (es decir, layout_weight = 1), esto puede tener algunos otros efectos en los otros elementos de diseño en los que tenga que trabajar, pero esto puede ayudarlo a permanecer visible cuando se abre el teclado.


solo usa seguir en manifiesto ...

<activity android:windowSoftInputMode="adjustPan">