SimplePagerIndicator.java :
import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dash.project_1510a.R;
/**
* Created by Dash on 2017/12/1.
*
*
*/
public class SimplePagerIndicator extends HorizontalScrollView implements View.OnClickListener,ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private LinearLayout linearLayout;
public SimplePagerIndicator(Context context) {
super(context);
}
public SimplePagerIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SimplePagerIndicator(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 对外提供一个方法,设置viewPager
*/
public void setViewPager(ViewPager viewPager){
this.viewPager = viewPager;
linearLayout = new LinearLayout(getContext());
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
this.addView(linearLayout);
//给linearLayout添加条目
for (int i =0;i<viewPager.getAdapter().getCount();i++){
View view = View.inflate(getContext(), R.layout.indicator_layout, null);
//设置点击事件
view.setOnClickListener(this);
//找到控件
TextView text_title = view.findViewById(R.id.text_title);
TextView text_indicator = view.findViewById(R.id.text_indicator);
text_title.setText(viewPager.getAdapter().getPageTitle(i));
if (i == 0){
text_indicator.setVisibility(View.VISIBLE);
//设置标题的颜色
text_title.setTextColor(Color.RED);
}else {
text_indicator.setVisibility(View.INVISIBLE);
text_title.setTextColor(Color.BLACK);
}
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10,5,10,5);
//把条目添加到linearLayout中
linearLayout.addView(view,layoutParams);
}
}
@Override
public void onClick(View view) {//view代表点击的控件
//遍历linaearLyaout里面的子条目
for (int i = 0;i<linearLayout.getChildCount();i++){
if (view == linearLayout.getChildAt(i)){
//选中viewPager那一页
viewPager.setCurrentItem(i,false);//
}
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0;i<linearLayout.getChildCount();i++){
View view = linearLayout.getChildAt(i);
TextView text_title = view.findViewById(R.id.text_title);
TextView text_indicator = view.findViewById(R.id.text_indicator);
if (i == position){
text_indicator.setVisibility(View.VISIBLE);
//设置标题的颜色
text_title.setTextColor(Color.RED);
//控制scrollView滚动到某个位置
this.smoothScrollTo((int) linearLayout.getChildAt(i).getX()-linearLayout.getChildAt(i).getWidth(),0);
}else {
text_indicator.setVisibility(View.INVISIBLE);
//设置标题的颜色
text_title.setTextColor(Color.BLACK);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
MainActivity.java :
public class MainActivity extends AppCompatActivity {
private ProgressView progressView;
private ViewPager viewPager;
private List<String> list;
private SimplePagerIndicator simplePagerIndicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.view_pager);
simplePagerIndicator = findViewById(R.id.simple_indicator);
list = new ArrayList<>();
list.add("推荐");
list.add("推荐新闻");
list.add("推荐娱乐");
list.add("推荐歌");
list.add("推荐视频");
list.add("局势");
list.add("军事");
list.add("国际");
list.add("推荐");
list.add("推荐新闻");
list.add("推荐娱乐");
list.add("推荐歌");
list.add("推荐视频");
list.add("局势");
list.add("军事");
list.add("国际");
list.add("推荐");
list.add("推荐新闻");
list.add("推荐娱乐");
list.add("推荐歌");
list.add("推荐视频");
list.add("局势");
list.add("军事");
list.add("国际");
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
@Override
public Fragment getItem(int position) {
return NewsFragment.getInstance(list.get(position));
}
@Override
public int getCount() {
return list.size();
}
});
simplePagerIndicator.setViewPager(viewPager);
//添加监听事件
viewPager.addOnPageChangeListener(simplePagerIndicator);
//找到我自己的控件
//CombineView combineView = findViewById(R.id.combine_view);
/*combineView.setText("是否开启夜间模式");
combineView.setChecked(true);*/
/*progressView = findViewById(R.id.progress_view);
progressView.start();*/
/*SwitchButtom switchButtom = findViewById(R.id.switch_bottn);
switchButtom.setBackgroudBitmap(R.drawable.switch_background);
switchButtom.setForegroudBitmap(R.drawable.slide_button_background);
switchButtom.setState(false);*/
}
}
fragment.java :
public class NewsFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(getArguments().getString("title",""));
return textView;
}
public static NewsFragment getInstance(String title){
NewsFragment newsFragment = new NewsFragment();
Bundle bundle = new Bundle();
bundle.putString("title",title);
newsFragment.setArguments(bundle);
return newsFragment;
}
}
activity_main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:dash="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.dash.project_1510a.MainActivity">
<com.dash.project_1510a.view.SimplePagerIndicator
android:scrollbars="none"
android:id="@+id/simple_indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.dash.project_1510a.view.SimplePagerIndicator>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
indicator_layout.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/text_title"
android:text="aaaaa"
android:textColor="#ff0000"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:background="#ff0000"
android:visibility="invisible"
android:id="@+id/text_indicator"
android:layout_width="match_parent"
android:layout_height="2dp" />
</LinearLayout>