隐藏滚动时的顶部布局并在向下滚动时显示(例如CollapsingToolBarlayout)



我遵循了此答案https://stackoverflow.com/a/36796343和中屏幕中的Acneive tableayout。现在,我想隐藏向上和底部的TableOut时,以全屏上的滚动滚动。向下滚动时,该页面也应恢复到原始位置。https://drive.google.com/open?id=0b_svfcild-_8uzlxulblekfdcwv2etvjamxyagkxvxvxftvhow

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
app:layout_scrollFlags="scroll|enterAlways"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/top_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <include layout="@layout/display_agents_row"/>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/bottom_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.design.widget.TabLayout
            android:id="@+id/pager_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:layout_marginTop="0dp"
            android:background="@color/black"
            android:minHeight="60dp"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/red"
            app:tabMode="fixed"
            app:tabSelectedTextColor="@color/white"
            app:tabTextAppearance="@style/TextAppearance.AppCompat.Small.Inverse" />
        <android.support.v4.view.ViewPager
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/pager_header"/>
    </RelativeLayout>
</LinearLayout>

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

我的片段

public class DisplayPartnerFragment extends Fragment {
Agent agent;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.display_partner, container, false);
    agent=new Gson().fromJson(getArguments().getString("agent"),Agent.class);
    if (agent!=null){
        setData();
        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(""+agent.getName());
    }
    // Locate the viewpager in activity_main.xml
    ViewPager viewPager = (ViewPager) v.findViewById(R.id.pager);
    // Set the ViewPagerAdapter into ViewPager
    ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
    adapter.addFrag(new SelectServiceFragment(), "About");
    adapter.addFrag(new SelectServiceFragment(), "Overview");
    viewPager.setAdapter(adapter);
    TabLayout mTabLayout = (TabLayout) v.findViewById(R.id.pager_header);
    mTabLayout.setupWithViewPager(viewPager);

    return v;
}
class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }
    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }
    @Override
    public int getCount() {
        return mFragmentList.size();
    }
    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}
private void setData() {
}
}

CoordinatorLayout替换根LinearLayout,然后将app:layout_scrollFlags="scroll|enterAlways"添加到 top_layout 中。

编辑:还将app:layout_behavior="@string/appbar_scrolling_view_behavior"添加到ViewPager

最新更新