平铺drawable有时延伸
我有一个ListView,其项目具有平铺背景。 为了实现这一点,我使用以下可绘制的xml:
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat" />
通常,这是有效的。 然而,有时候,src drawable不是平铺的,而是被拉伸以填充整个列表项。 (我有几个不同的瓷砖,我用它们混合在一个ListView中,如果拉伸而不是平铺,那么它就不会一次完成,因为这是值得的。)
我还尝试将android:dither="true"
到该xml中,因为我在某处阅读时没有它可能存在错误。 这并没有改变任何事情。
有没有人有同样的问题? 你怎么修好它的?
我也被这个问题困住了。 很难诊断,甚至很难找到类似的报告和可用的解决方案。
freenode上的“Tapas”#android-dev irc频道附带以下实用程序方法:
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);
}
}
}
将其应用于所有具有平铺背景设置的视图(例如findViewById)。
另外,我在AndroidManifest.xml中设置“anyDensity = true”之后,发现这个bug开始出现
除了CLAMP TileMode之外,我刚刚遇到了完全相同的问题。 我有一个位图,然后只是放在底部,并将其设置为一个XML定义的BitmapDrawable,并且在图形预览窗口中看起来都很好,无论我使用ViewImage的大小如何在顶部绘制位图然后重复最后一个像素填充到最后。
然后在模拟器和我自己的手机上启动各种SDK构建的应用程序,然后产生一个完全无用的直接“填充”类型的失真。
解决方案结果是,每当我在我的代码中更改ImageView的大小时,都会重新应用TileMode:
((BitmapDrawable)ascender.getDrawable()).setTileModeY(TileMode.CLAMP);
现在这一切都很好。 所以是的,这看起来像是一个bug。
由于我没有在这里看到链接,这被证实是Android中的一个错误。 它在ICS中得到了修复。 看到XML可绘制位图tileMode错误? 更多细节。
链接地址: http://www.djcxy.com/p/31475.html上一篇: Tiled drawable sometimes stretches
下一篇: How to remove white space when attaching fragment to framelayout