之前準備制作一個滑動標簽效果,使用了以下三種方法适袜。
第一種方式
直接使用TextView 當標簽用,給每個TextView添加監(jiān)聽事件生硬粗暴舷夺。此方法雖然能實現(xiàn)切換效果 但是那種炫酷切換特效也要手擼苦酱,比如標簽下面的可以移動的下劃線。不推薦给猾!
第二種方式
使用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);