Android Horizo​​ntal RecyclerView wrap_content

时间:2015-12-14 08:25:06

标签: android

我正在制作带有照片的水平RecyclerView,我遇到了wrap_parent问题。如果我放入View width = wrap_content,它是screenWidth宽度,尽管图像占用的空间非常小。如果我将wrap_content更改为某个值,则它会完美运行.RcyclerView的高度为75dp,match_parent

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="75dp"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:foreground="@drawable/card_foreground">
    <ImageView
        android:id="@+id/bitmap"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/image" />
</LinearLayout>

Screenshoot

深蓝色是屏幕,浅蓝色是照片。问题是当我将视图设置为wrap_content时,我有案例1。

SOLUTION:

我最近解决了这个问题,当你尝试使用缩放的ImageView wrap_parent时,有一些bug或类似的东西。它不能很好地工作。 为了解决这个问题,我已将每张照片调整为最终尺寸,然后再将其放入RecyclerView。另外,我在ImageView之间有一些小空间,我通过将padding=0margin=0添加到RecyclerView的childern来解决。

1 个答案:

答案 0 :(得分:0)

  1. 第一个解决方案:LinearLayout weight属性
  2. 只要您使用该视图LinearLayout,您就可以使用此属性的所有ImageView次视图:

        android:layout_weight="{number_value}"
    

    很快,如果您为ImageView的所有weight个视图添加相同的值,则会计算相同的空间,但不会超过其父视图属性。

    http://developer.android.com/guide/topics/ui/layout/linear.html

    请阅读此问题:

    What does android:layout_weight mean?

    如果您仍然遇到问题,请给我打电话。

    1. 第二个解决方案:ImageView scale属性

      对于ImageView,您可以使用scaleXscaleYscaleType属性。要获得相同的高度,您应对所有scaleY项使用相同的ImageView值。

    2. 还要考虑为此目的使用TableLayoutGridLayout