ViewPager划动时下滑线跟随并且显示不同内容
(仿今日头条上面的标签)效果如图:
要想实现以上效果可根据项目中提供的字段名进行变更,以下只是个人学习时总结的一小部分,如有不妥可留言,互相学习共同进步。
1、首先下载PagerSlidingTabStripLib库包(第三方)
2、创建自己的项目并与以上库包关联
3、在activity_main.xml中设置
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res/com.bwie.viewpagerindection">
<!-- 17731775956 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
>
<com.astuetz.PagerSlidingTabStrip
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="40dp"
android:id="@+id/psts"
app:pstsIndicatorColor="#ff08"
app:pstsIndicatorHeight="3dp"
></com.astuetz.PagerSlidingTabStrip>
<ImageView
android:layout_width="40dp"
android:layout_height="match_parent"
android:id="@+id/iv"
android:background="@drawable/ic_launcher"
/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/vp"
></android.support.v4.view.ViewPager>
</LinearLayout>
4、代码中实现部分
package com.bwie.viewpagerindection;
import com.astuetz.PagerSlidingTabStrip;
import com.bwie.viewpagerindection.fragment.ErrorFrag;
import com.bwie.viewpagerindection.fragment.Frag1;
import com.bwie.viewpagerindection.fragment.Frag2;
import com.bwie.viewpagerindection.fragment.Frag3;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
// 标签栏
String arr[]={"推荐","热点","北京","视频","社会","科技","汽车","体育","财经","娱乐"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
PagerSlidingTabStrip psts = (PagerSlidingTabStrip) findViewById(R.id.psts);
ViewPager vp = (ViewPager) findViewById(R.id.vp);
//为viewPager设置适配器
vp.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
//与ViewPager设置关联
psts.setViewPager(vp);
}
//定义MyPagerAdapter类继承FragmentPagerAdapter并实现方式
class MyPagerAdapter extends FragmentPagerAdapter {
//构造方法
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
//得到Fragment
@Override
public Fragment getItem(int position) {
//根据滑动得到不同fragment
switch (position) {
case 0:
return new Frag1();
case 1:
return new Frag2();
case 2:
return new Frag3();
default:
return new ErrorFrag();
}
}
@Override
public int getCount() {
return arr.length;
}
//返回字段(必填)
@Override
public CharSequence getPageTitle(int position) {
return arr[position];
}
}
}
5、每个Fragment中填写具体的内容此处不一一列举。
package com.bwie.viewpagerindection.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Frag1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView tv=new TextView(getActivity());
tv.setText("推荐");
return tv;
}
}