我的应用默认是硬件加速(在清单中设置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。
你能帮帮我吗?为什么它会这样?如何解决这个问题而不禁用硬件加速?答案 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。它显示我想要的东西。