package example.com.horizontalscroll;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
imp
ort android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import example.com.horizontalscroll.fragment.MyFragment;
public class MainActivity
extends AppCompatActivity
implements View.OnClickListener {
private HorizontalScrollView
main_hsv;
private ViewPager
main_viewpager;
private LinearLayout
linear_head;
private String[]
titles;
private ArrayList<TextView>
textViewsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main);
//
找控件
main_hsv = (HorizontalScrollView) findViewById(R.id.
main_hsv);
main_viewpager = (ViewPager) findViewById(R.id.
main_viewpager);
linear_head = (LinearLayout) findViewById(R.id.
linear_head);
//
创建一个标题数组
titles =
new String[]{
"
头条
",
"
动漫
",
"
电视剧
",
"
电影
",
"
综艺
",
"
科技
",
"
时尚
",
"
旅游
",
"
体育
",
"
搞笑
"};
//
动态添加头部标题
TextView
的方法
inittitles();
//viewpager
设置适配器
,
获取
fragment
传过来的值
main_viewpager.setAdapter(
new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(
int position) {
return MyFragment.
getInstance(
titles[position]); }
@Override
public int getCount() {
return
titles.
length; } });
//
设置顶部标题的监听事件的方法
setOnClickListener();
}
//
设置顶部标题的监听事件的方法
private void setOnClickListener() {
main_viewpager.addOnPageChangeListener(
new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(
int position,
float positionOffset,
int positionOffsetPixels) {
}
@Override
public void onPageSelected(
int position) {
//
标题变色
,
用循环改变标题颜色
,
通过判断来决定谁红谁灰
;
//
举例
:
娱乐的下标是
position
是
1
for (
int i =
0; i <
titles.
length ; i++) {
if(i==position){
textViewsList.get(i).setTextColor(Color.
RED);
}
else {
textViewsList.get(i).setTextColor(Color.
GRAY);
}
}
//
点击
TextView
标题随着滑动功能
,x
轴改变
,y
轴不变
int width =
textViewsList.get(position).getWidth();
int totalWidth=(width+
20)*position;
main_hsv.scrollTo(totalWidth,
0);
}
@Override
public void onPageScrollStateChanged(
int state) {
}
});
}
private void inittitles() {
//
创建一个集合将
TextView
放到集合里
textViewsList =
new ArrayList<>();
//
遍历每一个数组
,
将其添加到
TextView
中
for (
int i =
0; i <
titles.
length; i++) {
TextView textView =
new TextView(MainActivity.
this);
textView.setTextSize(
20);
//
根据将第一个
TextView
默认设置为红色字体
if (i ==
0) { textView.setTextColor(Color.
RED);
}
else {
textView.setTextColor(Color.
BLACK);
}
//
将
titles
赋值给
TextView
textView.setText(
titles[i]);
//
把循环的
i
设置给
TextView
的下标
t
extView.setId(i);
//textview
监听
textView.setOnClickListener(
this);
//
将
TextView
添加到
linear_head
中
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.
WRAP_CONTENT, LinearLayout.LayoutParams.
WRAP_CONTENT);
params.setMargins(
10,
10,
10,
10);
linear_head.addView(textView, params);
//
将
textview
视图添加到
TextViews
里面
textViewsList.add(textView);
}
}
//textview
监听
@Override
public void onClick(View view) {
//
得到
TextView
的下标
int id = view.getId();
//
点击
TextView
的时候把下标赋值给
viewpager
main_viewpager.setCurrentItem(id);
}
}
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="example.com.horizontalscroll.MainActivity"> <HorizontalScrollView android:id="@+id/main_hsv" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/linear_head" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"></LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/main_viewpager" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> </LinearLayout>