测试,摘要是只显示段落里的?不能显示markdown里的吗?
TabLayoutMediator tabLayoutMediator;//配置策略
tabLayoutMediator = new TabLayoutMediator(binding.articleTab, binding.articlePager2, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
if (position == 0) {
tab.setText("您的订阅"); //tablayout要显示的内容
} else {
tab.setText("所有文章");
}
}
});
tabLayoutMediator.attach();
viewpager一般搭配tablayout使用。使用方法如下: 阿萨HD
1、在xml布局中添加tablayout和viewpager2组件
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.ArticleListFragment">
<com.google.android.material.tabs.TabLayout
android:id="@+id/articleTab"
android:layout_width="200dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M"/>
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="T"/>
</com.google.android.material.tabs.TabLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/articlePager2"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/articleTab" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
2、配置tabLayout
TabLayoutMediator tabLayoutMediator;//配置策略
tabLayoutMediator = new TabLayoutMediator(binding.articleTab, binding.articlePager2, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
if (position == 0) {
tab.setText("您的订阅"); //tablayout要显示的内容
} else {
tab.setText("所有文章");
}
}
});
tabLayoutMediator.attach();
3、配置viewpager2
binding.articlePager2.setAdapter(new FragmentStateAdapter(this) {
@NonNull
@Override
public Fragment createFragment(int position) {//每一个页面对应要创建的对应的页面
if (position == 0) {
return new ArticleSubscFragment();
}
return new AllArticleFragment();
}
@Override
public int getItemCount() {//需要实现几个页面
return 2;
}
});
4、其他功能
4.1 设置为不可滚动(一般是viewpager2里的fragment有滚动,与viewpager2冲突)
binding.viewPager2.setUserInputEnabled(false);
4.2 设置默认显示界面
//设置当前默认页面为PlanNow(必须放在setAdapter后面才有效)
//如下直接设置是没有效果的
//要独立提供滚动设备,您应该使用onGlobalLayoutListener。因此,您可以保证在调用viewPager.setCurrentItem(position)时呈现视图。否则setCurrentItem不会产生任何影响,因为视图还没有渲染。
//参考https://www.thinbug.com/q/32401998
// binding.viewPager2.setCurrentItem(1);
//下标从0开始
binding.viewPager2.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
binding.viewPager2.setCurrentItem(1, false);
}
});