Android有關tablayout向上滑動停留頁面頂部(有待完善)
阿新 • • 發佈:2019-01-11
activity_main佈局:
注:在使用AppBarLayout控制元件時需要導design包
implementation'com.android.support:design:27.+'
<?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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="250dp" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/happyxueche" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:title="Toolbar"> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> <android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:tabIndicatorColor="#FFFFFFFF" app:tabSelectedTextColor="#FF888888" app:tabTextColor="#FFFFFFFF" /> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>
MainActivity中:
public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private CollapsingToolbarLayout toolbar_layout; private TabLayout tabLayout; private AppBarLayout app_bar; private NestedScrollView nestedScrollView; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //設定返回主頁的按鈕 getSupportActionBar().setDisplayHomeAsUpEnabled(true); toolbar_layout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); tabLayout = (TabLayout) findViewById(R.id.tabLayout); app_bar = (AppBarLayout) findViewById(R.id.app_bar); nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); viewPager = findViewById(R.id.viewPager); nestedScrollView.setFillViewport(true); ResumeAdapter rusumeAdapter = new ResumeAdapter(getSupportFragmentManager()); viewPager.setAdapter(rusumeAdapter); tabLayout.setupWithViewPager(viewPager); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { nestedScrollView.scrollTo(0,0); } @Override public void onPageScrollStateChanged(int state) { } }); } }
介面卡:
public class ResumeAdapter extends FragmentPagerAdapter{ public ResumeAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment = null; if (0 == position) { fragment = new AFragment(); } else if (1 == position) { fragment = new BFragment(); } else if (2 == position) { fragment = new CFragment(); } else if (3 == position) { fragment = new DFragment(); } return fragment; } @Override public int getCount() { return 4; } @Nullable @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "頭條"; case 1: return "熱點"; case 2: return "娛樂"; case 3: return "體育"; } return null; } }