5

Tôi có CoordinatorLayout như mô tả trong blog: http://android-developers.blogspot.ru/2015/05/android-design-support-library.htmlLàm cách nào để hiển thị các phần tử đã thu gọn trong CoordinatorLayout theo chương trình?

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

    <android.support.design.widget.AppBarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
    <android.support.v7.widget.Toolbar 
       ... 
       app:layout_scrollFlags="scroll|enterAlways"> 

    <TextView 
       ... 
       app:layout_scrollFlags="scroll|enterAlways"> 
    </android.support.design.widget.AppBarLayout> 
</android.support.design.widget.CoordinatorLayout> 

Bên AppBarLayout Tôi có ToolbarTextView với thêm thông tin trạng thái. AppBarLayout có thể bị thu gọn (sau khi cuộn). Đôi khi tôi cần hiển thị AppBarLayout để hiển thị trạng thái đã thay đổi.

Làm cách nào để thực hiện chương trình?

Trả lời

15

Như đã đề cập trong other comment:

Sử dụng libs hỗ trợ V23 bạn có thể gọi appBarLayout.setExpanded(true/false)

+0

này hoạt động hoàn hảo cho tôi. – Jigar

+1

tại sao điều này không được chấp nhận làm câu trả lời? hoạt động hoàn hảo. – KunalK

2

Do answear từ Tuấn Trần Anh, được thành lập here, bạn có thể sử dụng hai phương pháp này sụp đổ và rộng CoordinatorLayout programaticly:

public void collapseToolbar(){ 
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams(); 
    behavior = (AppBarLayout.Behavior) params.getBehavior(); 
    if(behavior!=null) { 
     behavior.onNestedFling(rootLayout, appbarLayout, null, 0, 10000, true); 
    } 
} 

public void expandToolbar(){ 
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams(); 
    behavior = (AppBarLayout.Behavior) params.getBehavior(); 
    if(behavior!=null) { 
     behavior.setTopAndBottomOffset(0); 
     behavior.onNestedPreScroll(rootLayout, appbarLayout, null, 0, 1, new int[2]); 
    } 
} 
0

Trong trường hợp của tôi tôi sử dụng giải pháp này

public void resetAppBarLayout() { 
    if (mContentContainer != null) { 
     final AppBarLayout.ScrollingViewBehavior container_behavior = ((AppBarLayout.ScrollingViewBehavior) 
       ((CoordinatorLayout.LayoutParams) mContentContainer.getLayoutParams()).getBehavior()); 
     if (container_behavior != null) { 
      container_behavior.setTopAndBottomOffset(appBarLayout.getTotalScrollRange()); 
     } 
     final AppBarLayout.Behavior appbar_behavior = ((AppBarLayout.Behavior) 
       ((CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams()).getBehavior()); 
     if (appbar_behavior != null) { 
      appbar_behavior.setTopAndBottomOffset(0); 
     } 
    } 
} 

cho lực lượng hiển thị appbarlayout. Đặt lại cuộn nhằm appbarLayout tối đa phạm vi cuộn và appBarLayout để bắt đầu position = 0.

Các vấn đề liên quan