Android Drawable:完全覆盖时不加载图层列表重复位图

Bry*_*eld 24 android bitmap repeat drawable

我有三个全屏周视图,一次加载(上一个,下一个,当前).每周视图有7列(一周中的每一天),具有可绘制的背景.

我的可绘制资源背景是

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Grey border on left and right --><item><shape><solid android:color="#999"/></shape></item>
    <!-- White background (.5pt to not cover border) --><item android:left=".5pt" android:right=".5pt"><shape>solid android:color="#FFF"/></shape></item>
    <!-- Image that repeats to make a grid --><item android:left=".5pt" android:right=".5pt"><bitmap android:src="@drawable/grid" android:tileMode="repeat" android:gravity="center" /></item>
    <!-- Times that align left. (12AM, 1AM, etc) --><item android:left="1pt" android:right=".5pt"><bitmap android:src="@drawable/grid_times" android:gravity="top|left|clip_horizontal" /></item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我有三组七个在彼此前面,只有前面(可见一个)获得重复图像(实际上是一个gif).如果我将前面移开,你可以看到其他人没有得到重复的图像

细节

布局是RelativeLayout,其中包含三个子类RelativeLayout.这三个子类彼此相同,并且覆盖dispatchTouchEvent允许它们被拖动.它们从彼此顶部开始,因此只有前面的一个可见.它们几乎完全相同,只是其中一个在顶部(首先).

这是android的顶视图

                ' first    '
                ' second   '
                ' third    '
                |          |#<-- The android screen boundaries. Only third is visible.

                   ^ ^ ^
                    user
                  looking
                  forward
Run Code Online (Sandbox Code Playgroud)

当用户使用他们的手指拖动视图时,它会像这样结束(用户可以看到左边第一个窗格(上周)的一点)

       ' first    '
                           ' second   '
                  ' third    '
                |          |
Run Code Online (Sandbox Code Playgroud)

另一种方式看起来像这样(用户可以看到第二个窗格的一小部分(下周))

     ' first    '
                         ' second   '
              ' third    '
                |          |
Run Code Online (Sandbox Code Playgroud)

当用户放手时,他们会抓住这个位置(现在,当我们解决这个问题时它会改变)

     ' first    '
                           ' second   '
                ' third    '
                |          |
Run Code Online (Sandbox Code Playgroud)

ᆼᆺᆼ*_*ᆼᆺᆼ 1

当您移动前面的一个和invalidate()其他的时,它们会加载可绘制对象。