我有一个 ListView,其项目具有平铺背景。为此,我使用以下可绘制 xml:
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat" />
通常,这是可行的。然而,有时,src drawable 不是平铺的,而是拉伸(stretch)以填充整个列表项。 (我有几个像这样的不同图 block ,我在一个 ListView 中混合使用它们。如果有拉伸(stretch)而不是平铺,那么它永远不会同时出现在所有这些图 block 中,这是值得的。)
我还尝试将 android:dither="true"
添加到该 xml,因为我在某处读到,如果没有它,可能会有错误。这并没有改变任何东西。
有人遇到过同样的问题吗?你是怎么解决的?
最佳答案
我也被这个问题所困扰。很难诊断,甚至更难找到类似的报告和可用的解决方案。
freenode #android-dev irc channel 上的“Tapas”带有以下实用方法:
public static void fixBackgroundRepeat(View view) {
Drawable bg = view.getBackground();
if (bg != null) {
if (bg instanceof BitmapDrawable) {
BitmapDrawable bmp = (BitmapDrawable) bg;
bmp.mutate(); // make sure that we aren't sharing state anymore
bmp.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
}
}
}
将其应用于所有具有平铺背景集的 View (例如 findViewById 它们)。
另外,我觉得这个错误是在 AndroidManifest.xml 中设置“anyDensity=true”后开始出现的
关于android - 平铺的drawable有时会延伸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336286/