前几天尝试使用RecyclerView取代Listview,但是始终解决不了一个问题,就是item不居中的问题,百度了,谷歌了,但是上面的所有方法都不适用,觉得很奇怪。今天去开发者官网看了下官方文档,终于发现了问题所在!
下面这段是我在网上的博客里找的一开始的RecyclerView的写法
public class RecycleviewActivity extends AppCompatActivity {
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
LinearLayoutManager mLayoutManager;
MyAdapter mAdapter;
String[] data = {"keai", "meili"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycleview);
ButterKnife.bind(this);
mLayoutManager= new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
recyclerView.setHasFixedSize(true);
//创建并设置Adapter
mAdapter = new MyAdapter(data);
recyclerView.setAdapter(mAdapter);
}
}
运行app后item始终不居中
下面的是我修改后的:
public class RecycleviewActivity extends AppCompatActivity {
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
MyAdapter mAdapter;
String[] data = {"keai", "meili"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycleview);
ButterKnife.bind(this);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
recyclerView.setHasFixedSize(true);
//创建并设置Adapter
mAdapter = new MyAdapter(data);
recyclerView.setAdapter(mAdapter);
}
}
其实差别不大,就是声明的时候声明为 RecyclerView.LayoutManager,而不要使用LinearLayoutManager,不然就会始终不能居中
原理是什么,说真的我也不太清楚,等我清楚了我补上~