RecyclerView的线性布局,可以垂直竖向排列当然也可以水平横向排列了。可能有很多Android开发年龄不长的人根本就不知道Gallery这个控件,因为在Android 16(就是Android4.1)版本之后被Deprecated掉了。但Gallery曾经确实一个很常见的控件。而我们实现一个横向的RecyclerView则可以代替Gallery。
代码实现就简单来一些。Item的布局代码就不写了,很简单的一个纵向的LinearLayout,上面是ImageView,下面是一个TextView。全部代码,跟纵向的相比,只有一个差别,那就是在设置LayourManager的时候,使用了
new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)
来获取一个横向的线性LayoutManager。
其中,最后一个boolean类型的参数,决定了item的排列顺序:如果为true,则是倒序,即最后一个item排在最前面。当然了,默认情况下,你可以不使用这个参数,跟该参数设置为false是一样的正序排列。
public class HorizontalRecyclerViewDemo extends AppCompatActivity { private RecyclerView recyclerView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_horizontal_recyclerview_demo); recyclerView = (RecyclerView)findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)); recyclerView.setAdapter(new MyAdapter()); } class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyAdapter.ViewHolder(LayoutInflater.from(HorizontalRecyclerViewDemo.this).inflate(R.layout.item_horizontal_recyclerviedw, parent, false)); } @Override public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) { holder.textView.setText("第" + position + "元素"); } @Override public int getItemCount() { return 10; } class ViewHolder extends RecyclerView.ViewHolder { private TextView textView; public ViewHolder(View itemView) { super(itemView); textView = (TextView)itemView.findViewById(R.id.textView); } } } }
最后的运行结果如下图:
(鼓掌,终于学会了自己弄个gif动画)
评论