效果图:
layout:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_indicator" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.iamchan.allfunction.ui.program.IndicatorActivity"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/toolbar"></include> <android.support.v7.widget.RecyclerView android:id="@+id/recyc" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView> <View android:background="#f5f5f5" android:layout_width="match_parent" android:layout_height="2dp"></View> </LinearLayout> </RelativeLayout>
item:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:padding="10dp" android:id="@+id/name" android:text="头条" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
java:
public class IndicatorActivity extends SwipeBackActivity { @BindView(R.id.iv_imgLeft) ImageView ivImgLeft; @BindView(R.id.tv_title) TextView tvTitle; @BindView(R.id.recyc) RecyclerView recyc; private int indicatorTag; private IndicatorAdapter indicatorAdapter; private List<String> indicatorList= Arrays.asList("头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条","头条");//数据源 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_indicator); ButterKnife.bind(this); initView(); } private void initView() { ivImgLeft.setImageResource(R.drawable.left); ivImgLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); tvTitle.setText("indicator"); indicatorAdapter=new IndicatorAdapter();//创建适配器对象 recyc.setAdapter(indicatorAdapter);//recyclerView加载适配器 //布局管理器 LinearLayoutManager lin=new LinearLayoutManager(this); lin.setOrientation(LinearLayoutManager.HORIZONTAL); recyc.setLayoutManager(lin); } //创建recyclerView 的适配器 内部类构造方法就没有创建 private class IndicatorAdapter extends RecyclerView.Adapter<IndicatorAdapter.MyViewHolder>{ //创建viewHolder @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyViewHolder(LayoutInflater.from(IndicatorActivity.this).inflate(R.layout.item_indicator,parent,false)); } //绑定数据 @Override public void onBindViewHolder(MyViewHolder holder, final int position) { //绑定数据 holder.name.setText(indicatorList.get(position)); //判断是否为第一个 如果是第一个颜色为蓝色 不是第一个颜色为黑色 初始化属性(成员变量)时没有添加值系统会自动添加一个初始化值(0) if(position==indicatorTag){ //getResources().getColor(R.color.blue) 这种获取颜色也行 但是画横线了 尽量别用 holder.name.setTextColor(ContextCompat.getColor(IndicatorActivity.this, R.color.blue)); }else{ holder.name.setTextColor(ContextCompat.getColor(IndicatorActivity.this, R.color.black)); } //点击事件这里是关键 获取点击的position(位置) 赋值给indicatorTag 刷新adapter holder.view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { indicatorTag=position; indicatorAdapter.notifyDataSetChanged(); } }); } //获取item的个数 @Override public int getItemCount() { return indicatorList.size(); } //创建viewholder public class MyViewHolder extends RecyclerView.ViewHolder { private TextView name; private View view; public MyViewHolder(View itemView) { super(itemView); view=itemView; name=itemView.findViewById(R.id.name); } } } }