android中的recyclerview项目中不需要的空格

时间:2016-07-27 23:05:38

标签: android

我在我的应用程序的recyclerview上有空格,我不知道为什么会有,因为我使用了recyclerview和这个适配器完成了同样的事情并且没有添加不需要的空间......但现在确实如此。 请帮忙

First screenshot

这是我的家庭布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="ideias.prime.mungano.Home"
    tools:showIn="@layout/activity_home">

   <android.support.v7.widget.RecyclerView
    android:id="@+id/clients_rv"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  </RelativeLayout>

这是recyclerview项目模型

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v7.widget.CardView
    android:id="@+id/cl_CardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?android:attr/selectableItemBackground"
    android:clickable="true"
    card_view:cardBackgroundColor="@color/colorAccent"
    card_view:cardCornerRadius="12dp"
    card_view:cardUseCompatPadding="true"
    card_view:contentPadding="6dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:id="@+id/cl_name"
            android:layout_width="69dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:ellipsize="end"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/cl_name"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:typeface="serif" />

        <TextView
            android:id="@+id/nome_do_cliente"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toEndOf="@+id/cl_name"
            android:ellipsize="end"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/programmer"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:typeface="serif" />

        <TextView
            android:id="@+id/cl_work"
            android:layout_width="82dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/cl_name"
            android:ellipsize="end"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/cl_work"
            android:textAlignment="center"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:typeface="serif" />

        <TextView
            android:id="@+id/trabalho_do_cliente"
            android:layout_width="99dp"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/cl_work"
            android:layout_toEndOf="@+id/cl_work"
            android:ellipsize="end"
            android:fitsSystemWindows="true"
            android:singleLine="true"
            android:text="@string/primeIdeas"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:typeface="serif" />

        <TextView
            android:id="@+id/cl_phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/cl_work"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:text="@string/cl_phone"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/telefone_do_cliente"
            android:layout_width="99dp"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/cl_phone"
            android:layout_toEndOf="@+id/cl_work"
            android:ellipsize="end"
            android:fitsSystemWindows="true"
            android:singleLine="true"
            android:text="@string/primeIdeas"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:typeface="serif" />

        <TextView
            android:id="@+id/cl_LP"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/trabalho_do_cliente"
            android:layout_alignParentEnd="true"
            android:ellipsize="end"
            android:ems="10"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/cl_LP"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/cl_LP_info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/telefone_do_cliente"
            android:layout_alignParentEnd="true"
            android:ellipsize="end"
            android:ems="10"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/cl_Lp_info"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/cl_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="53dp"
            android:layout_toEndOf="@+id/cl_phone"
            android:ellipsize="end"
            android:ems="10"
            android:fitsSystemWindows="true"
            android:padding="4dp"
            android:singleLine="true"
            android:text="@string/Id"
            android:textColor="@color/colorPrimaryText"
            android:textSize="15sp"
            android:visibility="gone" />
    </RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

这是适配器

public class Rv_adapter extends RecyclerView.Adapter<Rv_adapter.Holder> {
private Context context;
private List<Model> list = new ArrayList<>();
private Face f;

public Rv_adapter(Context c) {
    context = c;
}

public Rv_adapter(Context c, List<Model> l) {
    this.context = c;
    this.list = l;
}

public void Listenner(Face interfaCe) {
    this.f = interfaCe;
}

@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.rv_model, parent, false);
    return new Holder(v);
}

@Override
public void onBindViewHolder(Holder holder, int position) {
    holder.Id.setText(list.get(position).getId());
    holder.Name.setText(list.get(position).getName());
    holder.Lp.setText(list.get(position).getLp());
    holder.Phone.setText(list.get(position).getPhone());
    holder.Work.setText(list.get(position).getWork());
}

@Override
public int getItemCount() {
    return list.size();
}

class Holder extends RecyclerView.ViewHolder {
    private CardView c;
    private TextView Id, Name, Work, Phone, Lp;

    public Holder(View i) {
        super(i);
        c = (CardView) i.findViewById(R.id.cl_CardView);
        Id = (TextView) i.findViewById(R.id.cl_id);
        Name = (TextView) i.findViewById(R.id.nome_do_cliente);
        Work = (TextView) i.findViewById(R.id.trabalho_do_cliente);
        Phone = (TextView) i.findViewById(R.id.telefone_do_cliente);
        Lp = (TextView) i.findViewById(R.id.cl_LP_info);
    }
} // end

public interface Face {
    void Clicked(View v, int position, String cl_id);
}
}

以下是recyclerview

上不需要的空格的屏幕截图

First

Secound

Third

3 个答案:

答案 0 :(得分:0)

将您的recyclerview高度从android:layout_height="match_parent"更改为 android:layout_height="wrap_content"

以及为什么要为您的相对布局提供滚动行为? RecyclerView已经开始了!

答案 1 :(得分:0)

recyclerview 没有问题,您应该在 R.layout.rv_model 文件中进行更改。您已将android:fitsSystemWindows="true"属性设置为<TextView>

大多数情况下,您的应用程序不需要在状态栏或导航栏下绘制,但如果您这样做:您需要确保交互式元素(如按钮)不会隐藏在它们下面。这就是android:fitsSystemWindows =“true”属性的默认行为:它设置View的填充以确保内容不会覆盖系统窗口。

要记住的一些事项:

fitsSystemWindows首先应用深度 - 排序很重要:它是第一个使用插件产生差异的视图

Insets总是相对于整个窗口 - 即使在布局发生之前也可以应用插入,所以不要假设默认行为在应用其填充时知道View的位置

你设置的任何其他填充都会被覆盖 - 如果你在同一个视图中使用android:fitsSystemWindows =“true”,你会注意到paddingLeft / paddingTop / etc是无效的

而且,在很多情况下,例如全屏视频播放,这就足够了。你有你的完整出血视图没有属性和另一个全屏ViewGroup与android:fitsSystemWindows =“true”为您想要插入的控件。

或许您希望您的RecyclerView在透明导航栏下方滚动 - 通过使用android:fitsSystemWindows =“true”与android:clipToPadding =“false”一起使用,您的滚动内容将位于控件后面,但滚动到在底部,最后一个项目仍然会被填充到导航栏上方(而不是隐藏在下面!)。

检查您是否需要有关android:fitsSystemWindows

的更多信息

答案 2 :(得分:0)

您的项目布局每个都填满了屏幕的一部分。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" <!-- Here needs to be wrap_content -->
android:orientation="vertical">

<android.support.v7.widget.CardView
    android:id="@+id/cl_CardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

并从TextView中删除android:fitsSystemWindows="true",因为它们不需要适合系统窗口。