Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Por qué el teclado se superpone en AutoCompleteTextView cuando está dentro de ScrollView?

Tengo un diseño androide simple y código, pero el teclado siempre se superponen a mi AutoCompleteTextView cuando hago clic en él. Nota: El AutoCompleteTextView cuando está dentro de ScrollView. Nota: la plataforma es 6.0.1

 package com.example.jason_wu.search; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.AutoCompleteTextView; public class Main2Activity extends AppCompatActivity { private AutoCompleteTextView mAtv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); mAtv = (AutoCompleteTextView) findViewById(R.id.location_auto_complete); //issue 1 //mAtv.setBackground(getDrawable(R.drawable.search_input_focus)); //issue 2 mAtv.setHeight(300); } } 

Y mi AndroidManifest.xml aquí:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.jason_wu.search"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="com.example.jason_wu.search.Main2Activity" android:windowSoftInputMode="adjustPan" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

Layout.xml:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/scrollView" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="800dp" android:text="Large Text" android:id="@+id/textView"/> <AutoCompleteTextView android:id="@+id/location_auto_complete" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_below="@+id/textView" android:background="@color/transparent" android:dropDownAnchor="@+id/location_auto_complete" android:dropDownHeight="wrap_content" android:dropDownVerticalOffset="1dip" android:fontFamily="sans-serif-light" android:hint="@string/new_notification_location_hint" android:imeOptions="actionSearch" android:inputType="textUri" android:dropDownSelector="@color/location_bg_select" android:popupBackground="@color/location_bg_notselect" android:singleLine="true" android:textColor="#FFFFFF" android:alpha="0.2" android:textColorHint="#999999" android:textCursorDrawable="@null" android:textSize="15sp" /> <TextView android:layout_width="wrap_content" android:layout_height="100dp" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView2" android:layout_below="@+id/location_auto_complete" /> </RelativeLayout> </ScrollView> </RelativeLayout> 

Ver Número 2

  • Desplazar la columna de Gridview hacia arriba y hacia abajo al tocar esa columna
  • Cambiar el primer plano y el color de fondo del fragmento Autocompletar de lugar
  • ¿El android: scaleType = "fitCenter" sólo funciona con los atributos fix Layout_width y Layout_height?
  • ¿Cómo reemplazar inmediatamente la tostada actual con una segunda sin esperar a que la actual termine?
  • Dos ListViews y ScrollView
  • ¿Cómo acceder a recurso con nombre dinámico en mi caso?
  • ActionBarSherlock Ítem Icono de ancho extraño con Android 4.3
  • Cómo tener una imagen más amplia desplazándose en el fondo
  • 3 Solutions collect form web for “¿Por qué el teclado se superpone en AutoCompleteTextView cuando está dentro de ScrollView?”

    Intente limitar los elementos desplegables para mostrar

    Una forma es que puedes Limitar los elementos desplegables para mostrar. Pero no hay una forma tan apropiada para mostrar el número de la opción maximumSuggestions, pero el truco que puedes aplicar es obtener la altura de una de las filas y multiplicarla (número de filas para mostrar) veces y usar setDropDownHeight() para establecer su altura .

    Hay un método setDropDownHeight de la clase AutoCompleteTextView . Puedes verlos y usarlos.

    Si está confundido o no está seguro de la altura de los elementos de sugerencias, puede personalizarlo. Eche un vistazo a cómo configurar la altura personalizada.

    Pruebe este atributo a la actividad en el archivo AndroidManifest.xml

     android:windowSoftInputMode="stateHidden|adjustPan" 

    Debería verse algo así.

      <activity android:name="com.myexample.TestActivity" android:label="@string/login_screen" android:screenOrientation="portrait" // well you can change the orientation if you want android:windowSoftInputMode="stateHidden|adjustPan" /> 

    El atributo con el que desea jugar es que windowSoftInputMode intente valores diferentes ya que puede requerir salida diferente después de cierto tiempo.

     adjustPan 

    La ventana principal de la actividad no se redimensiona para hacer espacio para el teclado suave. Por el contrario, el contenido de la ventana se cuelga automáticamente para que el enfoque actual nunca sea oscurecido por el teclado y los usuarios siempre pueden ver lo que están escribiendo. Esto es generalmente menos deseable que el cambio de tamaño, porque el usuario puede necesitar cerrar el teclado suave para obtener e interactuar con partes oscurecidas de la ventana.

     adjustResize 

    La ventana principal de la actividad siempre se redimensiona para hacer espacio para el teclado virtual en la pantalla.

     stateHidden 

    El teclado virtual se oculta cuando el usuario elige la actividad, es decir, cuando el usuario navega afirmativamente hacia la actividad, en lugar de retroceder en ella por haber dejado otra actividad.

    Puede encontrar más detalles sobre la documentación de elementos de actividad

    Actualizar

    He escrito algo que podría ayudarle, el diseño está disponible en el 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="match_parent" android:orientation="vertical" tools:context="activities.list.first.TestLayoutActivity"> <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:layout_weight="1"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.6" android:orientation="vertical"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.4" android:orientation="vertical"> <AutoCompleteTextView android:id="@+id/TestLayoutActivity_autoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:completionThreshold="1" android:drawableLeft="@android:drawable/ic_menu_search" android:text="" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout> 

    AndroidManifest.xml

      <activity android:name="activities.list.first.TestLayoutActivity" android:label="@string/title_activity_test_layout" android:windowSoftInputMode="stateHidden|adjustPan" /> 

    El código está en el código

      String[] list = {"match1", "match2", "match3", "match12", "match11", "match8", "match7", "match4", "match13", "match10", "match9", "match6", "match5",}; AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.TestLayoutActivity_autoCompleteTextView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.simple_list_item_1, list); autoCompleteTextView.setAdapter(adapter); Before 

    antes de

     After 

    [ después]

    El comportamiento del teclado es que desplaza la vista para cerrar la parte inferior del área de texto.

    Finalmente, tenemos que usar el atributo android:gravity="bottom" para resolver el problema de la interfaz de usuario, pero tenemos que considerar el UX, ex: Hint.

    Por lo tanto, la solución es escuchar onClick() y para el tema del teclado, tenemos que utilizar el método dinámico para establecer la gravedad.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.