android twitter app,自定义viewpager标签如何

时间:2014-02-06 08:50:34

标签: android android-viewpager android-tabs viewpagerindicator pagerslidingtabstrip

android的twitter应用程序有自定义的viewpager选项卡,这是怎么做到的?文本位于每个相应选项卡中有新内容时出现的小中心dotthat上方。

我知道如何使用ACTION BAR选项卡执行此操作,但操作栏选项卡的问题在于横向模式下它们会移动到实际的操作栏。 Viewpager标签不会这样做。

我已经处理了一些Viewpager标题库,但我不清楚如何做到这一点

2 个答案:

答案 0 :(得分:3)

一个答案是使用像PagerSlidingTabStrip这样的第三方库,或者允许在选项卡中放置任何drawable的第二方库

答案 1 :(得分:1)

您可以为每个选项卡设置自己的视图,您应该使用TextView和TextView下面的蓝点创建布局xml(custom_tab_icon.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/tab_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TITLE"/>
<ImageView
    android:id="@+id/dot"
    android:layout_width="5dp"
    android:layout_height="5dp"
    android:layout_below="@id/tab_name"
    android:layout_centerHorizontal="true"
    android:background="@drawable/notifiercircle"
    android:visibility="visible"/>

然后,每次更改选项卡时,请调用此refreshTabIcon方法:

private void refreshTabIcons() {
    for (int i = 0; i < tabLayout.getTabCount(); i++) {
        TabLayout.Tab tab = tabLayout.getTabAt(i);
        tab.setCustomView(null); //if view is not first nullyfied, it's added to the previous one, not replaced
        tab.setCustomView(R.layout.custom_tab_icon);
        ImageView dot = ((ImageView) tab.getCustomView().findViewById(R.id.dot));
        if (viewPagerAdapter.getItem(viewPager.getCurrentItem()) == viewPagerAdapter.getItem(i)) {//This if determines if this is the selected tab
            dot.setVisibility(View.VISIBLE);
        } else {
            dot.setVisibility(View.INVISIBLE);
        }
        ((TextView) tab.getCustomView().findViewById(R.id.tab_name)).setText("tab title");
    }
}