android - 平铺的drawable有时会延伸

标签 android xml drawable tiling

我有一个 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/

相关文章:

python - 如何在没有 python 中的整个文件的情况下有效地检测 XML 模式

PHP XMLReader,获取版本和编码

android - 将 GradientDrawable 转换为位图

java - 检查 Firebase ui 查询类是否未返回任何文档

android - 我怎样才能像 Intent 一样将适配器传递给 fragment

android - 将 Google Analytics 添加到我的应用程序时出现 XML 错误

带有扫弧的android可绘制圆圈

android - ImageView背景onclick

java - 是否有类似于 <android.support.v7.widget.CardView> 的 <CardView> 标签?

android - 在 Android Studio 中导入模块