Reputation: 7384
in my app I use XML defined vertical dotted line.
<?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>
When I am nitpicking my layout in Android Studio, the line is rendered properly dotted, as it should, but problem comes out when I run the app on real device. The line is just solid with no gaps. What could be the problem? I tried many different devices including those running latest 4.3 Android. It look everywhere the same.
Upvotes: 34
Views: 11543
Reputation: 367
I found a same solution but in View attributes (xml):
<View
android:layout_width="wrap_content"
android:layout_height="4dp"
...
android:layerType="software"/>
I suppose it's a View level as said above. Other variants for attribute ("none" and of course "hardware") didn't work for me.
Upvotes: 16
Reputation: 14595
This is most likely related to hardware acceleration: Dashed lines are not supported in GL mode.
Its documented here: https://code.google.com/p/android/issues/detail?id=29944
Turn off your HW-acceleration in your AndroidManifest.xml like this:
android:hardwareAccelerated="false"
or:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
For more information how to use first solution: http://developer.android.com/guide/topics/graphics/hardware-accel.html
Upvotes: 77