android - poner - mostrar barra inferior samsung s8
La barra de herramientas de Android se mueve hacia arriba cuando aparece el teclado (11)
Estoy creando una pantalla de interfaz de usuario basada en chat en la que tengo barra de herramientas y recyclerview para mensajes de chat, y respondo a maquetación de mensajes.
Cada vez que edita el texto, el foco se mueve hacia arriba en la barra de herramientas. En su lugar me gustaría cambiar el tamaño de la recyclerview.
Algunas de las respuestas de stackoverflow sugieren colocar una vista de desplazamiento vacía debajo de la barra de herramientas , pero no funcionó.
<activity
android:name=".PostMessageActivity"
android:label="@string/title_activity_post_message"
android:windowSoftInputMode="stateVisible|adjustResize"
>
</activity>
Estoy configurando windowSoftInputMode
a stateVisible|adjustPan
en el archivo de manifiesto.
<RelativeLayout 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"
tools:context="com.pasonet.yokibu.PostMessageActivity"
>
<include
android:id="@+id/toolbar_home"
layout="@layout/toolbar_home"
android:elevation="5dp"
/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar_home"
android:orientation="vertical"
android:layout_above="@+id/add_post_layout"
>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/post_msg_recyclerview"
>
</android.support.v7.widget.RecyclerView>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:padding="5dp"
android:id="@+id/add_post_layout"
android:background="#ffffff"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:elevation="5dp"
android:layout_margin="0pt"
>
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/messageText"
android:layout_gravity="bottom"
android:layout_weight="1"
android:maxLines="4"
android:scrollbars="vertical"
android:background="@color/trasnperant"
android:hint="Type your message"
android:layout_marginBottom="4dp"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_send_black_36dp"
android:id="@+id/sendButton"
android:background="@drawable/abc_btn_default_mtrl_shape"
android:onClick="addPost"
/>
</LinearLayout>
Compruebe WindowsSoftInputMode en el manifiesto de Android intente configurar AdjustResize o AdjsutPan
Debe agregar android: fitsSystemWindows = "true" en el diseño raíz de la barra de herramientas. Si lo agrega al diseño principal de su actividad, aparecerá una línea extraña (con la altura de la barra de estado) sobre su barra de herramientas.
El problema fue que estaba usando <item name="android:windowTranslucentStatus">true</item>
en styles.xml
Para habilitar adjustResize
agregar android:fitsSystemWindows="true"
en el diseño principal de su actividad
En mi caso, mi aplicación predeterminada estaba usando Coordinator Layout para el elemento raíz. Incluso hacer lo que se describió anteriormente no resolvía mi problema. Entonces hice lo siguiente:
- Se cambió el diseño de la raíz de Coordinator Layout a RelativeLayout
- Incluido
android:fitsSystemWindows="true"
para el diseño de la raíz - Incluido
android:windowSoftInputMode="adjustResize|stateAlwaysHidden"
a la etiqueta de manifiesto de actividad.
Intenté muchas formas de mantener la barra de herramientas fija, sin cambiar el tamaño ni comprimir el diseño de android: windowSoftInputMode = "adjustResize", eso no es correcto.
Eso solo es posible por el diseño del Coordinador,
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ripple="http://schemas.android.com/apk/res-auto"
android:id="@+id/tv_toolbar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#fff"
ripple:contentInsetStart="0dp">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<ScrollView
android:id="@+id/coordinate_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:marginTop="56dp">
</ScrollView>
Mantener la estructura como
Coordinator layout
|-->Toolbar (android:id="@+id/toolbar")
|-->ScrollView (android:layout_below="@id/toolbar")
|-->Child
|-->Child
|-->Child
O añada esta línea en manifiesto. android:windowSoftInputMode="adjustResize"
Si no desea que su Toolbar
de Toolbar
se suba, no debe usar el adjustPan
. El uso de adjustResize
sin ninguna otra cosa (sin agregar ninguna vista adicional) debería ser suficiente.
Usando android:windowSoftInputMode="adjustNothing"
en la actividad en el manifiesto trabajado para mí.
Uso un CoordinatorLayout
como diseño raíz para la barra de herramientas. Tuve el mismo problema pero lo resolví configurando la barra de herramientas para:
app:layout_scrollFlags="enterAlways"
en lugar de:
app:layout_scrollFlags="scroll|enterAlways"
y añadiendo:
android:windowSoftInputMode="adjustNothing"
En la actividad en el manifiesto.
prueba esto,
android:windowSoftInputMode="adjustPan"
en su manifest.xml en la etiqueta de actividad.
<include
android:id="@+id/toolbar_home"
layout="@layout/toolbar_home"
android:elevation="5dp"
android:layout_alignParentTop="true"
/>