如何降低的Andr​​oid RecyclerView的项目之间的空间? [英] How to reduce space between items of RecyclerView in Android?

查看:159
本文介绍了如何降低的Andr​​oid RecyclerView的项目之间的空间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经实现水平RecyclerView的图像。水平导航做工精细,但多余的空间被绘制RecyclerView的两个项目之间。

多余的空间是在RecyclerView图像项左侧 DER

RecyclerView项目布局 -

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent>
< ImageView的
    机器人:ID =@ + ID / imgView
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:SRC =@绘制/ ic_launcher/>< / LinearLayout中>

我RecyclerView布局 -

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent机器人:layout_height =match_parent>< android.support.v7.widget.RecyclerView
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:ID =@ + ID / recyclerView
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>< / LinearLayout中>

RecyclerView设置 -

  recyclerView =(RecyclerView)findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(新LinearLayoutManager(这一点,LinearLayoutManager.HORIZONTAL,FALSE));
HlistViewAdapter适配器=新HlistViewAdapter(粒子阵列);
recyclerView.setAdapter(适配器);
recyclerView.setItemAnimator(新DefaultItemAnimator());

我RecyclerView适配器 -

 公共类HlistViewAdapter扩展RecyclerView.Adapter< HlistViewAdapter.ViewHolder> {ArrayList的<串GT; pathArray;公共HlistViewAdapter(ArrayList的<串GT; pathArray){
    this.pathArray = pathArray;
}@覆盖
公共HlistViewAdapter.ViewHolder onCreateViewHolder(ViewGroup中ViewGroup中,int i)以{    查看itemLayoutView = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.hlist_item_layout,NULL);    //创建ViewHolder    ViewHolder viewHolder =新ViewHolder(itemLayoutView);
    返回viewHolder;
}@覆盖
公共无效onBindViewHolder(HlistViewAdapter.ViewHolder viewHolder,int i)以{
    viewHolder.imgViewIcon.setImageBitmap(BitmapFactory.de codeFILE(pathArray.get(I)));
}公共静态类ViewHolder扩展RecyclerView.ViewHolder {    公共ImageView的imgViewIcon;    公共ViewHolder(查看itemLayoutView){
        超(itemLayoutView);
        imgViewIcon =(ImageView的)itemLayoutView.findViewById(R.id.imgView);
    }
}@覆盖
公众诠释getItemCount(){
    返回pathArray.size();
}
}


解决方案

与用户聊天后编辑答案

问题是图像是不同的机器人装置也不同的大小,并把它们拉伸至prevent空的空间是不可能的。鉴于此,我建议使用ViewPager代替RecyclerView的,具有将提供相同的功能与buth上的ImageView将如何与不同大小图像反应的更好的控制研究。

HTTP://$c$ctheory.in/android - 图像 - 幻灯片 - 使用 - viewpager-pageradapter /

I have implemented Horizontal RecyclerView for Images. Horizontal navigation work fine but unwanted space is drawn between two items of RecyclerView.

RecyclerView item layout-

<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>

My RecyclerView layout-

<?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 Setup-

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());

My RecyclerView Adapter-

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();
}
}

解决方案

edited answer after chat with user

the problem was the size of the images being too different to the different android devices, and the impossibility to stretch them to prevent the empty spaces. given that, i recommend the use of a ViewPager instead of a RecyclerView, having that it will provide the same functionality buth with a better controll on how the imageView will react with different sized images.

http://codetheory.in/android-image-slideshow-using-viewpager-pageradapter/

这篇关于如何降低的Andr​​oid RecyclerView的项目之间的空间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆