如何创建倾斜列表项

时间:2017-01-09 15:15:19

标签: android android-recyclerview

我有一个横向RecyclerView看起来像这样(显然)

-------------------------------
|     |     |     |     |     |
|  1  |  2  |  3  |  4  |  5  |
|     |     |     |     |     |
-------------------------------

我想这样做:

------------------------------
|      /     /     /     /    |
|  1  /  2  /  3  /  4  /  5  |
|    /     /     /     /      |
-------------------------------

创建这样的RecyclerView的最佳方式是什么?

注意:我不是要创建一个倾斜的分隔符。我正在尝试创建一个倾斜的布局。通过倾斜,我的意思是掩盖不旋转。项目应具有match_parent ImageViewTextView。两者应该看起来笔直,而不是旋转。另请注意第一项和最后一项。

以下是一个示例:

sample

3 个答案:

答案 0 :(得分:3)

我建议您使用Squint

使用以下代码创建布局xml。此布局文件通过显示图像和文本在回收器视图中呈现单行。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:squint="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical" 
                android:layout_marginLeft="-25dp"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content">

    <com.intrusoft.squint.DiagonalView
        android:id="@+id/diagonalView"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:scaleType="centerCrop"
        squint:angle="10"
        squint:diagonalDirection="bottom_to_top"
        squint:gravity="right"/>

    <TextView
        android:background="#80000000"
        android:layout_width="150dp"
        android:layout_height="30dp"
        android:gravity="center"
        android:textColor="#FFF"
        android:id="@+id/txtName"
        android:layout_alignBottom="@+id/diagonalView"
        android:layout_alignLeft="@+id/diagonalView"
        android:layout_alignStart="@+id/diagonalView"/>

</RelativeLayout>

编写自定义适配器后,应按如下方式准备RecyclerView。

 LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); // make it horizontal

 recyclerView.setLayoutManager(layoutManager);

成功应用这些操作后,我得到了这样的图像。 enter image description here

此解决方案可能不是完美的解决方案。有一些缺陷点,例如 android:layout_marginLeft =“ - 25dp” 。至少它可以给你一个想法。

答案 1 :(得分:0)

我不知道您问题的确切答案,但我建议您创建自己的DividerItemDecoration。

有关详情,请查看:https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html

答案 2 :(得分:0)

您似乎无法真正做RecyclerView,因为这些观点不会重叠。此时,您可能需要考虑扩展水平ScrollView,并将图像和其他元素拼接成一个您通过覆盖onDraw方法滚动的长视图。您可以在onTouch方法覆盖中处理点击事件。这看起来像一个非常大的项目,特别是如果你有很多图像并且必须管理内存。