如何减少 Android 中 RecyclerView 项目之间的 space?
How to reduce space between items of RecyclerView in Android?
我已经实现了 Horizontal RecyclerView for Images。水平导航工作正常但不需要的 space 绘制在 RecyclerView 的两个项目之间。
RecyclerView 项目布局-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
</LinearLayout>
我的 RecyclerView 布局-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
RecyclerView 设置-
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
HlistViewAdapter adapter = new HlistViewAdapter(pArray);
recyclerView.setAdapter(adapter);
recyclerView.setItemAnimator(new DefaultItemAnimator());
我的 RecyclerView 适配器-
public class HlistViewAdapter extends RecyclerView.Adapter<HlistViewAdapter.ViewHolder>{
ArrayList<String> pathArray;
public HlistViewAdapter(ArrayList<String> pathArray){
this.pathArray = pathArray;
}
@Override
public HlistViewAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemLayoutView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.hlist_item_layout, null);
// create ViewHolder
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(HlistViewAdapter.ViewHolder viewHolder, int i) {
viewHolder.imgViewIcon.setImageBitmap(BitmapFactory.decodeFile(pathArray.get(i)));
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.imgView);
}
}
@Override
public int getItemCount() {
return pathArray.size();
}
}
与用户聊天后编辑的答案
问题是图像的大小对于不同的 android 设备来说差异太大,并且无法拉伸它们以防止出现空白。鉴于此,我建议使用 ViewPager 而不是 RecyclerView,因为它将提供相同的功能,但可以更好地控制 imageView 如何对不同大小的图像做出反应。
http://codetheory.in/android-image-slideshow-using-viewpager-pageradapter/
我已经实现了 Horizontal RecyclerView for Images。水平导航工作正常但不需要的 space 绘制在 RecyclerView 的两个项目之间。
RecyclerView 项目布局-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
</LinearLayout>
我的 RecyclerView 布局-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
RecyclerView 设置-
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
HlistViewAdapter adapter = new HlistViewAdapter(pArray);
recyclerView.setAdapter(adapter);
recyclerView.setItemAnimator(new DefaultItemAnimator());
我的 RecyclerView 适配器-
public class HlistViewAdapter extends RecyclerView.Adapter<HlistViewAdapter.ViewHolder>{
ArrayList<String> pathArray;
public HlistViewAdapter(ArrayList<String> pathArray){
this.pathArray = pathArray;
}
@Override
public HlistViewAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemLayoutView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.hlist_item_layout, null);
// create ViewHolder
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(HlistViewAdapter.ViewHolder viewHolder, int i) {
viewHolder.imgViewIcon.setImageBitmap(BitmapFactory.decodeFile(pathArray.get(i)));
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.imgView);
}
}
@Override
public int getItemCount() {
return pathArray.size();
}
}
与用户聊天后编辑的答案
问题是图像的大小对于不同的 android 设备来说差异太大,并且无法拉伸它们以防止出现空白。鉴于此,我建议使用 ViewPager 而不是 RecyclerView,因为它将提供相同的功能,但可以更好地控制 imageView 如何对不同大小的图像做出反应。
http://codetheory.in/android-image-slideshow-using-viewpager-pageradapter/