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:
- Cómo obtener la posición del elemento seleccionado actual usando TabLayout en Android Design Library
- Doble signo de exclamación en EditText setError cuando se utiliza en un campo de tipo de contraseña
- EditText getHint () devuelve null al usar la biblioteca de soporte de diseño
- El texto de error en TextInputLayout está cubierto por el teclado
- Color FAB para el fondo No cambia en los dispositivos de versión de Gingerbread
<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:
- ¿Cómo diseñar el NavigationView de la biblioteca de soporte de diseño?
- BottomSheetDialogFragment - Cómo configurar la altura expandida (o el desplazamiento de la parte superior del min)
- Android BottomSheet: Está buscando bajo la barra de herramientas
- Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
- DrawableLeft se está superponiendo con una sugerencia con TextInputLayout android
- El estilo TabLayout no puede resolver @ dimen / tab_max_width después de pasar a Android Design Support v23
- Agregar vistas debajo de la barra de herramientas en CoordinatorLayout
- Biblioteca de soporte de diseño de Android con Theme.Material
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?