11

Tôi đang cố gắng triển khai CollapsingToolbarLayout với NestedScrollView và nó hiển thị TextView trong NestedScrollView ở phía dưới và không cho phép, cuộn hoặc thu gọn Thanh công cụ. Tôi đã nhận được điều này để làm việc với một RecyclerView nhưng không NestedScrollView. Khi tôi xóa app:layout_behavior="@string/appbar_scrolling_view_behavior Thanh công cụ bị thu hẹp nhưng NestedScrollView không nằm dưới AppBarLayout. Bất kỳ giải pháp hoặc đề xuất nào để sửa lỗi này?CollapsingToolbarLayout và NestedScrollView không hoạt động

XML

<android.support.design.widget.CoordinatorLayout 
    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:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:text="Hello" 
       android:textColor="#000" 
       android:textSize="16sp"/> 
     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

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

      <ImageView 
       android:id="@+id/backdrop" 
       android:layout_width="match_parent" 
       android:layout_height="134dp" 
       android:background="@color/primary" 
       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"/> 
     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 
</android.support.design.widget.CoordinatorLayout> 

quả

enter image description here

+0

Thêm 'android: fitsSystemWindows =" true "vào trong CoordinatorLayout và NestedScrollView. Tiếp theo di chuyển nestedScrollview phía trên AppBarLayout. – Psypher

+0

@ ɥʇᴉɾuɐɹ Chỉ cập nhật câu trả lời của tôi với những gì bạn đã hỏi. Vẫn là kết quả tương tự. –

+0

@ ɥʇᴉɾuɐɹ Nếu bạn có một ví dụ làm việc đơn giản về điều này, hãy đăng nó và tôi sẽ kiểm tra nó. –

Trả lời

0

Tôi đã gặp vấn đề tương tự và đã viết loại sửa lỗi nhanh cho điều đó. Giả sử, rằng LinearLayout của bạn có chứa "Hello" nhãn là ràng buộc để mContainerToolbar của bạn chắc chắn sẽ mToolbar bạn có thể sử dụng này:

private void fixNestedScrollViewScrolling() { 
    final int bottomMargin = getScreenHeight() - mContainer.getHeight() - mToolbar.getHeight(); 
    final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
      mContainer.getLayoutParams()); 
    layoutParams.setMargins(0, 0, 0, bottomMargin); 
    mContainer.setLayoutParams(layoutParams); 
} 

private int getScreenHeight() { 
    final Display display = getWindowManager().getDefaultDisplay(); 
    final Point size = new Point(); 
    display.getSize(size); 
    return size.y; 
} 

phương pháp sửa chữa này được gọi trong onCreate phương pháp Activity tôi:

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_single_post); 

    fixNestedScrollViewScrolling(); 

    // some other stuff here ... 
} 
Các vấn đề liên quan