在列表视图单元格中重复绘制

时间:2013-09-12 19:19:17

标签: android listview drawable repeat

我正在尝试使用功能区构建一个ListView,就像Path所做的那样,可以在这里看到:https://lh3.ggpht.com/Nyw96YFpuXHgQRWOA8-iz5EQLcz71sGZlbgw3ALdaKQDdzBkcdBckDX-KA8dFDK4DA8z=h900-rw

我知道具有属性'tileMode =“repeat”'的位图资源可以在单个布局上工作,但是当我尝试使用它来创建ListView单元格时,drawable不会在Y方向上重复,它只是渲染一次drawable。

功能区资源(高度:1px)ribbon.xml:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ribbon_orig"
android:tileMode="repeat"/>

单元格布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/ribbon"
        android:background="@drawable/ribbon"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="@dimen/ribbon_x_offset"/>

</RelativeLayout>

这甚至可能吗?

我发现这样做的唯一方法是专门定义layout_height,我真的很想避免。

1 个答案:

答案 0 :(得分:0)

想出来。

在&#34; getView&#34; ArrayView的ArrayAdapter函数。高度(和宽度)尚未计算,因此&#34; match_parent&#34;在LinearLayout上显示功能区是没用的。

我现在的修复方法是&#34; addOnLayoutChangeListener&#34;在膨胀的视图上然后立即关闭监听器并将LinearLayout设置为正确的高度。

这个其他堆栈溢出问题给了我这个想法: Calculating the height of each row of a ListView