之前准备制作一个滑动标签效果,使用了以下三种方法。
第一种方式
直接使用TextView 当标签用,给每个TextView添加监听事件生硬粗暴。此方法虽然能实现切换效果 但是那种炫酷切换特效也要手撸,比如标签下面的可以移动的下划线。不推荐!
第二种方式
使用FragmentTabHost + ViewPage (同理FragmentViewpager)也尝试用了一下。这个TabHost需要自己生成并返回textview。测试了一下完美运行,但是viewpager的滑动效果不在了,只能通过点击标签完成切换。虽然有其它解决方式 不推荐!
/**
* 初始化并返回Tab子布局
*/
private View getTabItemView(int position) {
TextView textView = new TextView(PagerActivity.this);
textView.setWidth(30);
textView.setText(titles[position]);
return textView;
}
第三种方式
@Gradle: com.android.support:design-27.1.1
使用TabLayout (需要导包依赖 ) 这种方式完美解决前面的问题,并且代码量也是最少的。非常推荐!
设置xml
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="30dp" />
<android.support.v4.view.ViewPager
android:id="@+id/myViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tab_layout"
android:layout_alignParentStart="true"
android:layout_marginTop="0dp" />
activty代码
viewPager = findViewById(R.id.myViewPager);
TabLayout tabLayout = findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
List<Fragment> data = new ArrayList<>();
data.add(new FirstFragment());
data.add(new SecendFragment());
MyViewPageAdapter adapter = new MyViewPageAdapter(data, getSupportFragmentManager(),titles);
viewPager.setAdapter(adapter);