错误的可绘制颜色与硬件加速

时间:2012-12-25 13:52:09

标签: android

我的应用默认是硬件加速(在清单中设置android:hardwareAccelerated =“true”)。

我有一个drawable,我将其设置为视图的背景。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke
        android:width="1px"
        android:color="#666666" />

    <solid android:color="@android:color/transparent" />

</shape>

我还有另一种观点:

 <View
        android:id="@+id/divider"
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:background="#666666" />

两者的线宽和颜色应相同。如果我设置

,它们是相同的
setLayerType(View.LAYER_TYPE_SOFTWARE, null);

但是! 如果我没有为具有可绘制背景的视图设置软件层类型,我会得到2个不同的行:

- 带有彩色背景的线条正常,

- 另一个变为2px宽,用2种颜色绘制:#333333和#191919。

你能帮帮我吗?为什么它会这样?如何解决这个问题而不禁用硬件加速?

2 个答案:

答案 0 :(得分:0)

使用与密度无关的像素(dp)代替或使用常规像素(px)

    <stroke
        android:width="1dp"
        android:color="#666666" />

<View
        android:id="@+id/divider"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#666666" />

答案 1 :(得分:0)

1dp线对我来说太宽了。我需要最窄的线路,1px符合我的要求。

我实际上设法解决了这个问题。 事实上,如果硬件加速打开,1px形状的线条会被错误地渲染,你无法用它做任何事情。 相反,我在nodpi目录中使用了9patch drawable。它显示我想要的东西。