我有一次加载三个全屏周 View (上一个、下一个、当前)。每个周 View 都有 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>
由于某种原因,如果我将三组七个放在一起,则只有前面(可见的一组)会得到重复的图像(实际上是一个 gif)。如果我把前面移过来,你可以看到其他人没有得到重复的图像
详情
布局是RelativeLayout,子类是RelativeLayout的三个子类。这三个子类彼此相同,并覆盖了允许它们被拖动的 dispatchTouchEvent
。它们从彼此顶部开始,因此只有前面的可见。它们几乎完全相同,只是其中一个在顶部(起初)。
这是android的顶 View
' first '
' second '
' third '
| |#<-- The android screen boundaries. Only third is visible.
^ ^ ^
user
looking
forward
当用户用手指拖动 View 时,它会像这样结束(用户可以看到左侧第一个 Pane (前一周)的一点点)
' first '
' second '
' third '
| |
另一种方式看起来像这样(用户可以看到第二个 Pane 的一点点(下周))
' first '
' second '
' third '
| |
当用户放手时,他们会捕捉到这个位置(现在,当我们修复这个问题时它会改变)
' first '
' second '
' third '
| |
最佳答案
当你移动前面的那个时,invalidate()
其他的,所以他们加载了drawable。
关于Android可绘制: layer-list repeat bitmap does not load when entirely covered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857838/