【问题标题】:Whitespace between views in recycler view item回收站视图项中视图之间的空白
【发布时间】:2016-01-24 01:54:53
【问题描述】:

我在回收站视图中为每个项目使用卡片视图,但我在图片下方和上方得到空白,我不确定如何删除它。这是每个项目的 xml 布局。

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cv_custom"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginEnd="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginStart="10dp"
    android:clickable="true"
    android:elevation="2dp"
    android:foreground="?android:attr/selectableItemBackground"
    card_view:cardCornerRadius="1dp"
    card_view:cardElevation="2dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/image_path"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:contentDescription="@string/event_image" />

        <TextView
            android:id="@+id/custom_event_name"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:ellipsize="marquee"
            android:gravity="start|top"
            android:maxLines="1"
            android:padding="5dp"
            android:textColor="@color/parent"
            android:textSize="20sp"
            android:textStyle="bold" />

    </LinearLayout>
</android.support.v7.widget.CardView>

这就是它当前所提供的 xml 的样子。一个项目 i 带有图像,一个没有。将回收器视图的背景设置为红色,以便更明显地看到间隙。

【问题讨论】:

    标签: android padding android-recyclerview android-cardview


    【解决方案1】:

    ImageView 中您需要提供一个比例

    android:scaleType="centerCrop"
    

    您看到空白的原因是图像和容器的纵横比不同。

    假设您正在尝试将一个宽矩形放入一个正方形中。你可以把它放进去,但顶部和底部将是“空的”或者在这种情况下是白色的。

    如果您进行中心裁剪,则图像将被裁剪。这会将矩形切割成正方形,因此非常适合!

    【讨论】:

    • 这不起作用,现在我只有一个拉长的图像,其上方和下方的空间量相同,我尝试使用 -10dp 作为图像的边距顶部,然后对于文本视图也使用相同的解决了这个问题,但这似乎不是一个好主意,而且当没有设置图像时,-10dp 会启动并且文本视图被截断一半。
    • 尝试不同的scaleTypes
    • 或尝试使用android:adjustViewBounds="true",但我认为这不会解决此问题
    • 碰巧确实解决了这个问题,我使用了调整视图边界以及比例类型适合中心,效果很好,谢谢。
    【解决方案2】:

    我曾经通过在视图下方放置空间来解决此问题,但我不喜欢视图列表末尾的所有额外空间。但我意识到,只需将一半的空间放在上面,一半放在下面(在列表项上)。然后当它们组合在一起时,它的项目之间的空间是原来的两倍,以及用于填充列表顶部和底部的正常空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 2018-04-11
      • 2019-11-05
      • 2016-09-27
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多