1

나는 recyclerView에서 위아래로 스크롤하면서 툴바 및 bottomNavigationView에 대해 표시 및 숨기기 기능을 구현했습니다. 이제는 recyclerView 항목을 클릭하고 recyclerView가없는 세부 페이지로 이동합니다. 이제는 툴바와 bottomNavigationView도 숨겨져 있습니다. 이 단편에서 다시 볼 수있게하는 모든 메소드.도구 모음 및 아래쪽 탐색보기 다시 표시

main_activity.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:orientation="vertical"> 

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

    <android.support.v7.widget.Toolbar 
     android:id="@+id/tool_bar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:elevation="5dp" 
     android:theme="@style/ToolbarTheme" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:titleTextAppearance="@style/Toolbar.TitleText" /> 
</android.support.design.widget.AppBarLayout> 

<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    /> 


<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx 
    android:id="@+id/bottom_navigation_bar" 
    android:layout_width="match_parent" 
    android:layout_height="56dp" 
    android:layout_alignParentBottom="true" 
    android:layout_gravity="bottom" 
    android:background="@drawable/menu_view" 
    android:isScrollContainer="false" 
    app:itemIconTint="@drawable/nav_item_color_state" 
    app:menu="@menu/my_navigation_items" /> 

BottomNavigationViewBehaviour.java

public class BottomNavigationViewBehavior extends CoordinatorLayout.Behavior<BottomNavigationView> { 

private int height; 

@Override 
public boolean onLayoutChild(CoordinatorLayout parent, BottomNavigationView child, int layoutDirection) { 
    height = child.getHeight(); 
    return super.onLayoutChild(parent, child, layoutDirection); 
} 

@Override 
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, BottomNavigationView child, 
            View directTargetChild, View target, int nestedScrollAxes) { 
    return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL; 
} 

@Override 
public void onNestedScroll(CoordinatorLayout coordinatorLayout, BottomNavigationView child, View target, 
          int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { 
    if (dyConsumed > 0) { 
     slideDown(child); 
    } else if (dyConsumed < 0) { 
     slideUp(child); 
    } 
} 

private void slideUp(BottomNavigationView child) { 
    child.clearAnimation(); 
    child.animate().translationY(0).setDuration(50); 
} 

private void slideDown(BottomNavigationView child) { 
    child.clearAnimation(); 
    child.animate().translationY(height).setDuration(50); 
} 

}

MainActivity.java

CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) mBottomNav.getLayoutParams(); 
    layoutParams.setBehavior(new BottomNavigationViewBehavior()); 
    mBottomNav.clearAnimation(); 
    mBottomNav.animate().translationY(mBottomNav.getHeight()).setDuration(100); 
012,

도움이 될 것입니다.

답변

1

appbarLayout을 사용하여 appbarLayout.setExpand (true)를 사용하여 확장 할 수 있지만 bottombar가 아닌 작업 표시 줄 만 표시합니다.

+0

고마워요! :) appbar를 수정하는 데 도움이되지만 bottomnavigationview는 수정하지 않아야합니다. 그 어떤 해결책이라도? –