在我的应用程序中,我使用XML定义的垂直虚线。
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="90"
android:toDegrees="90">
<shape
android:shape="line">
<stroke
android:width="1dp"
android:color="@color/light_gray"
android:dashWidth="2dp"
android:dashGap="4dp"
/>
</shape>
当我在Android Studio中挑剔我的布局时,线条会正确地呈现点亮,但是当我在真实设备上运行应用程序时会出现问题。这条线很稳固,没有间隙。你知道问题出在哪里吗?我尝试了很多不同的设备,包括那些运行最新4.3 Android的设备。它看起来无处不在:/
答案 0 :(得分:57)
这很可能与硬件加速有关:GL模式不支持虚线。
在此记录: https://code.google.com/p/android/issues/detail?id=29944
在AndroidManifest.xml中关闭你的HW加速,如下所示:
android:hardwareAccelerated="false"
或:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
有关如何使用第一个解决方案的更多信息: http://developer.android.com/guide/topics/graphics/hardware-accel.html
答案 1 :(得分:20)
控制硬件加速
您可以在以下级别控制硬件加速:
应用程序
活动
窗口
查看
申请级别
<application android:hardwareAccelerated="true" ...>
活动级别
<application android:hardwareAccelerated="true">
<activity ... />
<activity android:hardwareAccelerated="false" />
</application>
窗口级别
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
查看级别
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
答案 2 :(得分:3)
我在View属性(xml)中找到了相同的解决方案:
<View
android:layout_width="wrap_content"
android:layout_height="4dp"
...
android:layerType="software"/>
我想这是如上所述的View级别。属性的其他变体(“无”,当然还有“硬件”)对我不起作用。