support last cardview android android-design-library

android - last - WebView en CoordinatorLayout con CollapsingToolbarLayout



com.android.support:design 26 (6)

Creo que la app:layout_scrollFlags="scroll|enterAlways" set app:layout_scrollFlags="scroll|enterAlways" será útil

Me gustaría agregar un WebView en un CoordinatorLayout, teniendo CollapsingToolbarLayout en AppBarLayout. El problema es que WebView se reduce en altura y no llena el espacio debajo de la barra de herramientas, por lo que no es utilizable. También intenté usar WebView como elemento secundario de NestedScrollView: inicialmente no funciona (reduce mi altura de WebView), pero el desplazamiento de mi WebView reducido hace que se llene la ventana gráfica.

Aquí está el diseño que utilicé:

<?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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <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/collapsing_toolbar" 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"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </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/article" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>


El error ahora está arreglado en la última (22.2.1) biblioteca de soporte de diseño.



Intente eliminar el atributo android:fitsSystemWindows="true" de todas las vistas.


Puedes usar android:fillViewport="true" para NestedScrollView y layout_height="wrap_content" para WebView


DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); int statusBarHeight = getStatusBarHeight(this); TypedArray actionbarSizeTypedArray = this.obtainStyledAttributes(new int[]{android.R.attr.actionBarSize}); int actionBarHeight = (int) actionbarSizeTypedArray.getDimension(0, 0); NestedScrollView nestedScrollView = (NestedScrollView) findViewById(R.id.nsv_scroll); CoordinatorLayout.LayoutParams params = new CoordinatorLayout.LayoutParams( CoordinatorLayout.LayoutParams.MATCH_PARENT, metrics.heightPixels - actionBarHeight - statusBarHeight); nestedScrollView.setLayoutParams(params);

El método getStatusBarHeight() :

public int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0; int statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return statusBarHeight; }