2015-05-30 53 views
21

我想添加一個WebView在CoordinatorLayout中,在AppBarLayout中有CollapsingToolbarLayout。 問題在於WebView縮小了高度,並且不填充工具欄下方的空間,使其無法使用。 我也嘗試使用WebView作爲NestedScrollView的子項:最初它不起作用(它縮小了我的WebView的高度),但是滾動縮小的WebView使其填充視口。CollaborationingToolbarLayout在CoordinatorLayout中的WebView

這裏是我使用的佈局:

<?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> 

回答

1

的錯誤,現在固定在最新(22.2.1)設計支持庫。

+2

自從最新版本(24.2.0)以來,錯誤又回來了 – Marian

0

嘗試從所有視圖中刪除屬性android:fitsSystemWindows="true"

+1

它不起作用:擬合系統窗口不會拉伸視圖,而且還需要系統窗口才能通過AppBarLayout獲取狀態欄稀鬆布。 –

+0

好的。我有另一個問題與實施,但我已經建立一個webapp的測試應用程序。你可以在這篇文章中看到xml佈局文件:http://stackoverflow.com/questions/30568772/android-design-library-appbar-scrolling-behavior。 我的apptheme看起來像這樣: Zenco

+0

我剛剛看到你的問題http://stackoverflow.com/questions/30568772/android-design-library-appbar-scrolling-behavior:你如何在java代碼中實例化你的webview? –

-2
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); 

的方法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; 
} 
+0

您能否解釋一下爲什麼這將有助於提問者的問題? – SuperBiasedMan

+0

嚴禁......「指標」未在此處定義@Jiashu –

+0

'DisplayMetrics指標=新的DisplayMetrics(); getError()。getMetrics(metrics);' – Jiashu

1

我想設置app:layout_scrollFlags="scroll|enterAlways"將有助於

4

可以使用android:fillViewport="true"爲NestedScrollView和layout_height="wrap_content"對的WebView

相關問題