ben*_*nvd 54 xml android tiling drawable
我有一个ListView,其项目具有平铺背景.为此,我使用以下drawable xml:
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat" />
Run Code Online (Sandbox Code Playgroud)
通常,这是有效的.但是,有时,src drawable不会平铺,而是拉伸以填充整个列表项.(我有几个不同的瓷砖,我把它们混合在一个ListView中.如果有拉伸而不是平铺,那么它永远不会同时存在于所有这些中,因为这是值得的.)
我也尝试添加android:dither="true"
到那个xml,因为我读到某个地方没有它可能会有bug.这并没有改变任何事情.
有没有人有同样的问题?你怎么修好它的?
Ivo*_*ijk 39
我也被这个问题所困扰.很难诊断,甚至更难找到类似的报告和可用的解决方案.
freenode#android-dev irc频道上的"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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
将它应用于具有平铺背景集的所有视图(例如findViewById).
此外,我觉得这个错误在AndroidManifest.xml中设置"anyDensity = true"后开始起作用
除了使用CLAMP TileMode之外,我只有完全相同的问题.我有一个位图,我想要在底部拉伸并将其设置为XML定义的BitmapDrawable,并且在Graphical Preview窗口中看起来都很好,无论我使ViewImage的大小如何,它都会在顶部绘制我的位图然后重复最后一个像素填充到最后.
在模拟器和我自己的手机上的各种SDK版本上启动应用程序,然后产生了直接的"填充"类型失真,这是完全没用的.
每次我在代码中更改ImageView的大小时,解决方案只是重新应用TileMode:
((BitmapDrawable)ascender.getDrawable()).setTileModeY(TileMode.CLAMP);
Run Code Online (Sandbox Code Playgroud)
现在一切都很好.所以,是的,这看起来像是一个错误.
关于这个主题在线有很多噪音,有各种(和众多)建议的解决方案.
即:对于xhdpi tile资产,16px乘16px.
如果位图没有完美镶嵌,我希望Android平台能够"过度平铺"以填充空间 - 然后减少浪费.然而,在mdpi,hdpi和xhdpi(和v2.3到v4.0)'不一致'上试验10px*10px平铺位图显示了这种拉伸.
base-2维度允许在进行各种分辨率时进行整体和均匀划分,并且每次设备在每次创建视图时都尝试绘制切片.
在Android开发中,我们与测距硬件竞争,供应商将手指插入平台 - 有时这种琐碎的黑魔法才有效.
这似乎至少解决了这个问题.值得一试.
归档时间: |
|
查看次数: |
12013 次 |
最近记录: |