Android 如何在viewpager中隐藏recyclerview滚动上的顶部布局
我习惯于底部布局 我想隐藏tablayout,在viewpager中查看recyclerview时相对的两个布局Android 如何在viewpager中隐藏recyclerview滚动上的顶部布局,android,Android,我习惯于底部布局 我想隐藏tablayout,在viewpager中查看recyclerview时相对的两个布局 app:layout_behavior="@string/appbar_scrolling_view_behavior" 如果可能还需要,隐藏结束后正常布局可见 请帮忙 这是我的布局 layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
app:layout_behavior="@string/appbar_scrolling_view_behavior"
如果可能还需要,隐藏结束后正常布局可见
请帮忙
这是我的布局
layout.xml
<RelativeLayout 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="wrap_content"
android:background="#ffffff">
<com.ogaclejapan.smarttablayout.SmartTabLayout
android:id="@+id/st_route_result"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/main_top_background"
android:paddingLeft="8dp"
app:stl_clickable="true"
app:stl_defaultTabBackground="@color/main_top_background"
app:stl_defaultTabTextAllCaps="true"
app:stl_defaultTabTextColor="@color/main_top_background"
app:stl_defaultTabTextHorizontalPadding="10dp"
app:stl_defaultTabTextMinWidth="65dp"
app:stl_defaultTabTextSize="@dimen/main_tab_title_size"
app:stl_distributeEvenly="false"
app:stl_dividerThickness="0dp"
app:stl_drawDecorationAfterTab="true"
app:stl_indicatorAlwaysInCenter="false"
app:stl_indicatorColor="#f2f2f2"
app:stl_indicatorCornerRadius="0dp"
app:stl_indicatorGravity="bottom"
app:stl_indicatorInFront="true"
app:stl_indicatorInterpolation="linear"
app:stl_indicatorThickness="1dp"
app:stl_indicatorWidth="55dp"
app:stl_indicatorWithoutPadding="false"
app:stl_overlineThickness="0dp"
app:stl_underlineThickness="0dp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/st_route_result"
android:layout_marginTop="-1dp"
android:background="#11f2f2f2">
</LinearLayout>
<RelativeLayout
android:id="@+id/rl_route_result_refresh"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_toLeftOf="@+id/rl_route_result_exit">
<ImageView
android:id="@+id/iv_route_result_refresh"
android:layout_width="29dp"
android:layout_height="23dp"
android:layout_centerInParent="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="13dp"
android:src="@mipmap/main_search_station_refresh_un_real" />
<ImageView
android:id="@+id/iv_route_result_live"
android:layout_width="20dp"
android:layout_height="10dp"
android:layout_marginLeft="23dp"
android:layout_marginTop="15dp"
android:src="@mipmap/livebtn"
android:visibility="invisible" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_exit"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_alignParentRight="true">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="10dp"
android:src="@mipmap/exit_white" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_middle"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/st_route_result"
android:background="@color/main_top_background">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_route_result_total_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/nomal_color_ffffff"
android:textSize="14dp" />
<TextView
android:id="@+id/tv_route_result_total_station"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textColor="@color/nomal_color_ffffff"
android:textSize="14dp" />
<TextView
android:id="@+id/tv_route_result_total_trans"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textColor="@color/nomal_color_ffffff"
android:textSize="14dp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/rl_route_result_alarm"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_toLeftOf="@+id/rl_route_result_share">
<ImageView
android:id="@+id/iv_route_result_alarm"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_centerInParent="true"
android:src="@mipmap/alarm_on" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_share"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_toLeftOf="@+id/rl_route_result_favorit">
<ImageView
android:layout_width="17dp"
android:layout_height="21dp"
android:layout_centerInParent="true"
android:layout_marginRight="22dp"
android:src="@mipmap/route_share" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_favorit"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true">
<ImageView
android:id="@+id/iv_route_result_favorit"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_centerInParent="true"
android:layout_marginBottom="8dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:src="@mipmap/mymetro_unfavorit" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_bottom"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_below="@id/rl_route_result_middle"
android:background="@color/main_top_background">
<TextView
android:id="@+id/tv_route_result_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:textColor="#ffffff"
android:textSize="16dp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_route_result_enter_train_top"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#000000"
android:visibility="gone">
<ImageView
android:id="@+id/iv_enter_train_mark"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:src="@mipmap/mark_for" />
<TextView
android:id="@+id/tv_enter_train_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="7dp"
android:layout_toRightOf="@+id/iv_enter_train_mark"
android:text="탑승중"
android:textColor="#ffffff"
android:textSize="14dp" />
<TextView
android:id="@+id/tv_enter_train_destination"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_marginRight="3dp"
android:layout_toRightOf="@+id/tv_enter_train_title"
android:ellipsize="marquee"
android:singleLine="true"
android:text="창동행 4335"
android:textColor="#ffffff"
android:textSize="14dp" />
<RelativeLayout
android:id="@+id/rl_enter_train_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true">
<ImageView
android:id="@+id/tv_enter_train_dwon"
android:layout_width="21dp"
android:layout_height="11dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="10dp"
android:src="@mipmap/list_down_white" />
</RelativeLayout>
</RelativeLayout>
<adcapsule.smapp.View.Custom.CustomViewPager
android:id="@+id/vp_route_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/rl_route_result_bottom"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
创建一个新的抽象类,该类扩展了RecyclerView.OnScrollListener 然后您可以按集合X,Y移动项目
public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
private int mToolbarOffset = 0;
private int mToolbarHeight;
public HidingScrollListener(Context context) {
mToolbarHeight = Utils.getToolbarHeight(context);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
clipToolbarOffset();
onMoved(mToolbarOffset);
//The most important
if((mToolbarOffset <mToolbarHeight && dy>0) || (mToolbarOffset >0 && dy<0)) {
mToolbarOffset += dy;
}
}
private void clipToolbarOffset() {
if(mToolbarOffset > mToolbarHeight) {
mToolbarOffset = mToolbarHeight;
} else if(mToolbarOffset < 0) {
mToolbarOffset = 0;
}
}
public abstract void onMoved(int distance);}
有一个中文网站,而且更完整
创建一个新的抽象类,该类扩展了RecyclerView.OnScrollListener 然后您可以按集合X,Y移动项目
public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
private int mToolbarOffset = 0;
private int mToolbarHeight;
public HidingScrollListener(Context context) {
mToolbarHeight = Utils.getToolbarHeight(context);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
clipToolbarOffset();
onMoved(mToolbarOffset);
//The most important
if((mToolbarOffset <mToolbarHeight && dy>0) || (mToolbarOffset >0 && dy<0)) {
mToolbarOffset += dy;
}
}
private void clipToolbarOffset() {
if(mToolbarOffset > mToolbarHeight) {
mToolbarOffset = mToolbarHeight;
} else if(mToolbarOffset < 0) {
mToolbarOffset = 0;
}
}
public abstract void onMoved(int distance);}
有一个中文网站,而且更完整
正常
后卷轴
如果您使用的是recycler view inside viewpager,请执行以下步骤
1. take CoordinatorLayout as root layout
2. put all layouts in AppBarLayout you wanna hide on the scroll of recyclerview
(also put TabLayout)
3. add viewpager after AppBarLayout
在要隐藏的视图中添加此行(在AppBarLayout内)
将此行添加到viewpager中
app:layout_behavior="@string/appbar_scrolling_view_behavior"
例如:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="6dp"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@android:color/white" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
正常
后卷轴
如果您使用的是recycler view inside viewpager,请执行以下步骤
1. take CoordinatorLayout as root layout
2. put all layouts in AppBarLayout you wanna hide on the scroll of recyclerview
(also put TabLayout)
3. add viewpager after AppBarLayout
在要隐藏的视图中添加此行(在AppBarLayout内)
将此行添加到viewpager中
app:layout_behavior="@string/appbar_scrolling_view_behavior"
例如:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="6dp"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@android:color/white" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>