1.增加jar包 - com.viewpagerindicator:library:2.4.1


2、找到ViewPagerIndicator给的Sample,找到自己需要的视图,然后拷贝代码即可,依照TabPageIndicator为例

3、代码

Activity.class

java:注意:Activity一定要写主题为android:theme="@style/AppTheme"<pre name="code" class="java">package com.huiting.activity;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentStatePagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.ActionBar;import android.support.v7.widget.SearchView;import android.view.Gravity;import android.view.Menu;import android.view.View;import com.huiting.R;import com.huiting.fragment.MainActivityFactoryFragment;import com.huiting.tools.LogUtils;import com.viewpagerindicator.TabPageIndicator;/** * 绘厅 * Created by zst on 16/1/15. */public class HallActivity extends BaseActivity {    private static final String[] CONTENT = new String[] { "Recent", "Artists", "Albums", "Songs", "Playlists", "Genres" };    @Override    protected void initActionBar() {        super.initActionBar();        ActionBar actionBar = getSupportActionBar();        //标题布局配置        ActionBar.LayoutParams alTitle = new ActionBar.LayoutParams(                ActionBar.LayoutParams.WRAP_CONTENT,                ActionBar.LayoutParams.WRAP_CONTENT,                Gravity.CENTER        );        View viewTitleBar = getLayoutInflater().inflate(R.layout.title_hall, null);        //标题自定义        actionBar.setCustomView(viewTitleBar, alTitle);        actionBar.setDisplayHomeAsUpEnabled(false);//去掉导航        actionBar.setDisplayShowTitleEnabled(false);//去掉标题        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);//设置自定义的Custom        actionBar.setDisplayShowCustomEnabled(true);//显示自定义Custom        //返回自定义        actionBar.setDisplayHomeAsUpEnabled(true);        actionBar.setHomeAsUpIndicator(R.mipmap.btn_back);        actionBar.setDisplayShowHomeEnabled(true);    }    @Override    protected void init() {        super.init();    }    @Override    protected void initView() {        super.initView();        setContentView(R.layout.activity_hall);        FragmentStatePagerAdapter adapter = new MyAdapter(getSupportFragmentManager());        ViewPager pager = (ViewPager)findViewById(R.id.pager);        pager.setAdapter(adapter);        TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);        indicator.setViewPager(pager);        LogUtils.d("哈哈哈哈", indicator + "");        indicator.setVisibility(View.VISIBLE);    }    class MyAdapter extends FragmentStatePagerAdapter {        public MyAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return MainActivityFactoryFragment.createFragment(position);        }        @Override        public CharSequence getPageTitle(int position) {            return CONTENT[position % CONTENT.length].toUpperCase();        }        @Override        public int getCount() {            return CONTENT.length;        }    }}


 布局xml:  
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <com.viewpagerindicator.TabPageIndicator        android:id="@+id/indicator"        android:layout_height="wrap_content"        android:layout_width="fill_parent"        android:visibility="gone"        />    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="1"        /></LinearLayout>

style.xml
注意:AppTheme一定要写vpiTabPageIndicatorStyle
<resources>    <!-- Base application theme. -->    <style name="AppTheme" parent="Theme.AppCompat.Light">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>        <!-- 去除ActionBar阴影 -->        <item name="android:windowContentOverlay">@null</item>        <!-- 设置ActionBar背景色 -->        <item name="android:actionBarStyle">@style/MyActionBar</item>        <!-- 设置ActionBar背景色 - 兼容 -->        <item name="actionBarStyle">@style/MyActionBar</item>        <!-- ViewPager Indicator-->        <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>    </style>    <!-- ActionBar属性 -->    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">        <item name="android:background">@color/app_bg_color</item>        <!-- Support library compatibility -->        <item name="background">@color/app_bg_color</item>        <!-- 高度 -->        <item name="android:height">50dip</item>        <!-- Support library compatibility -->        <item name="height">50dip</item>    </style>    <!-- Viewpager indicator - vpiTabPageIndicatorStyle -->    <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">        <!--<item name="android:background">@drawable/custom_tab_indicator</item>-->        <!--<item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>-->        <item name="android:textColor">#FF555555</item>        <item name="android:textSize">16sp</item>        <!--<item name="android:divider">@drawable/custom_tab_indicator_divider</item>-->        <item name="android:dividerPadding">10dp</item>        <item name="android:showDividers">middle</item>        <item name="android:paddingLeft">8dp</item>        <item name="android:paddingRight">8dp</item>        <item name="android:fadingEdge">horizontal</item>        <item name="android:fadingEdgeLength">8dp</item>    </style></resources>

  

以上是所有代码,有注释,下面是报错:

报错一:

报错:Failed to find style ‘vpiTabPageIndicatorStyle’ in current theme解决:在AppTheme中设置vpiTabPageIndicatorStyle

报错二:

报错:java.lang.IllegalStateException: ViewPager has not been bound解决:将TabPageIndicator 设置为:android:visibility=“gone”,数据加载完成后再设置为visiable即可。

报错三:

报错:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setMenuVisibility(boolean)' on a null object reference解决:布局一定是Fragment<span style="color:#808000;">     </span><pre name="code" class="java">@Overridepublic Fragment getItem(int position) {    return MainActivityFactoryFragment.createFragment(position);}
  

报错四:

报错:java.lang.NullPointerException: Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference解决:ViewPagerIndicator中Simple给的示例FragmentPagerAdapter 改成 FragmentStatePagerAdapter 即可                                                               


更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. 样式 主题 对话框 国际化
  3. 解决Android(安卓)Studio 和 Android(安卓)SDK Manager 无法在线
  4. Android(安卓)Interface(UI) 界面控件简单介绍01
  5. android webkit
  6. 在RelativeLayout布局中可以设置标签的android:layout_toLeftO..
  7. android中HttpURLConnection调用getResponseCode()时崩溃 解决方
  8. Android开发小知识点集锦
  9. android绘图之Paint(1)

随机推荐

  1. Crosswalk 集成到 Android(安卓)Studio
  2. 服务器基于PHP CodeIgniter,Android基于Vo
  3. Android(安卓)SharedPreferences用法及程
  4. Android官方离线文档(API文档)打开速度慢的
  5. Android中Cursor关闭的问题
  6. Android工程 引用另外一个Android工程(类
  7. android接入即时IM
  8. Android - 支持不同的设备
  9. (Android实战系统二)Android网络互动传输
  10. 使用Swift为Android构建代码