Problema de altura NestedScrollView y WebView
Utilizo el nuevo android.support.v4.widget.NestedScrollView
y me enfrenté con el problema.
Aquí está mi diseño:
- El tema personalizado interfiere con el color de fondo del bocadillo
- Las devoluciones de llamadas CoordinatorLayout.Behavior no activan
- Panning google map en CoordinatorLayout hace que recyclerview se desplace en android design support library 23.0.1
- Botón de acción flotante que no se muestra completamente dentro de un fragmento
- Viewpager desborda la pantalla dentro del diseño del coordinador
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="250dp"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7"> <!-- some views inside --> </RelativeLayout> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <WebView android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.widget.NestedScrollView>
Necesito cargar html dentro de textView, así que hago:
content.setText(Html.fromHtml(htmlString));
Y parece extraño. Mi texto se coloca en la parte inferior de la pantalla.
Después de pasar el texto, comienza a parecer normal.
Y creo que textview no es sólo ver con estos problemas. He intentado usar webview, pero incluso no muestra contenido (creo que debido a la altura de cálculo incorrecto). Así que necesito webview o textview para corregir el trabajo con NestedScrollView
.
PS Si establezco la altura de textview en dp
entonces el texto mira correctamente, pero necesito wrap_content
para la altura.
Actualizado 08.07.15
Finalmente necesito usar WebView
. Alex Facciorusso respuesta en parte funciona, pero me enfrenté a otro tema. Cuando el contenido de WebView
tiene alguna altura específica, puedo ver parte del contenido, pero no puedo desplazarme hacia abajo. Ejemplo:
- Color del texto del botón AlertDialog con la biblioteca de soporte v24.2.1
- Android BottomSheet: Está buscando bajo la barra de herramientas
- Agregar vistas debajo de la barra de herramientas en CoordinatorLayout
- Stick vista en la parte inferior del fragmento de un viewpager dentro de la disposición del coordinador
- Cómo hacer que la cabecera de NavigationView sea pegajosa
- En android cómo configurar la imagen de encabezado de cajón de navegación y el nombre de forma programática en el archivo de clase?
- TabLayout (Android Design Library) Color del texto
- BottomNavigationView deshabilita el modo de cambio sin usar la reflexión
Una solución sencilla será agregar una Vista vacía con una altura de 500dp por debajo de su TextView dentro de su LinearLayout. Esa Vista debe empujar hacia arriba su TextView a la posición correcta.
<android.support.v4.widget.NestedScrollView app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Your scrolling content --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/random_text" /> <View android:layout_width="match_parent" android:layout_height="500dp"/> </LinearLayout>
He encontrado una solución:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:minHeight="300dp"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="256dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingToolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
He añadido una minHeight de 500dp a NestedScrollView, y ahora el WebView se ajusta a toda la altura del diseño, y la barra de herramientas de colapso está funcionando.
UPDATED : envuelto WebView con FrameLayout y minHeight añadido a ella.
envuelto WebView con FrameLayout y añadió View (android: layout_height = "800dp") como WebView'minHeight a la misma.
Este es un error, actualiza sdk, reemplaza "compile 'com.android.support:design:22.2.0'" con "compile 'com.android.support:design:22.2.1'" en build.gradle. Eso es trabajo para mí.
Como dijo Mayur Raiyani: este problema se resuelve en la versión 22.2.1 de la biblioteca de soporte: code.google.com/p/android/issues/detail?id=175234 . Gracias a todos por las respuestas.
añadiendo android:layout_gravity="fill_vertical"
en NestedScrollView resolverá su problema
<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_gravity="fill_vertical" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="24dp" /> </android.support.v4.widget.NestedScrollView>
- Android :: Establecer la longitud máxima de EditText mediante programación con otro InputFilter
- ListFragment cómo obtener la listView?