1

摺疊工具欄我有一個摺疊工具欄和一個視圖尋呼機的活性。 在這些頁面中的一個,有一個與它下面的一個按鈕,網頁視圖:與viewpager和底部按鈕

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/button" 
    android:layout_alignParentTop="true"> 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:isScrollContainer="false" /> 
</android.support.v4.widget.NestedScrollView> 

<Button 
    android:id="@+id/button" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" /> 

</RelativeLayout> 

編輯:和其他XML

<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinator" 
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.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    app:elevation="0dp"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     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" 
      app:layout_scrollFlags="scroll|enterAlways"> 

     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabGravity="center" 
     app:tabMode="scrollable" 
     app:tabSelectedTextColor="@color/accent" /> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_weight="1" 
      android:layout_width="match_parent" 
      android:layout_height="0px" /> 

</LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 

按鈕應始終是可見的。問題是,當工具欄沒有崩潰,它就會被排擠出畫面,而當你崩潰的工具欄

我一直在尋找了很多,但無法找到一個解決方案,僅得到可見。 還有我看看到小吃吧的XML,因爲它總是在正確的位置上顯示,但我看不出有什麼特別。 你有任何想法如何解決這個問題,或者不可能與ViewPager?

edit2: 在這個答案中,問題描述的很不錯,但是建議的修正,直接添加視圖到協調器視圖將不起作用,因爲按鈕只屬於頁面並設置可見性關閉按鈕是否顯示正確的頁面看起來像是真的很糟糕的風格:) https://stackoverflow.com/a/32959820/1625744

+0

添加XML wtih你'CoordinatorLayout'請 –

+0

請在這裏添加了整個XML代碼。 – Umair

+0

我改變了它 – user1625744

回答

0

所以我發現了一個看起來並不那麼糟糕的工作解決方案。 我伸出AppBarLayout.ScrollingViewBehavior,並將此方法:

@Override 
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, 
             View dependency) { 
    final CoordinatorLayout.Behavior behavior = 
      ((CoordinatorLayout.LayoutParams) dependency.getLayoutParams()).getBehavior(); 
    if (behavior instanceof AppBarLayout.Behavior) { 
     if (childBottom == 0) { 
      childBottom = child.getBottom(); 
      int offset = childBottom - parent.getHeight(); 
      ViewGroup.LayoutParams params = child.getLayoutParams(); 
      initialHeigth = child.getHeight() - offset; 
      params.height = initialHeigth; 
      child.setLayoutParams(params); 
     } else { 
      int offset = dependency.getHeight() - dependency.getBottom(); 
      ViewGroup.LayoutParams params = child.getLayoutParams(); 
      params.height = initialHeigth + offset; 
      child.setLayoutParams(params); 
     } 
    } 
    return super.onDependentViewChanged(parent, child, dependency); 
} 

不知道這是一個很好的解決方案,因爲佈局得到大小重置所有的時間。另外,偏移的計算方式,在超級方法更復雜,但所有的東西是在私有方法和變量