Dotted line is actually not dotted when app is running on real Android device
Solution 1
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
Solution 2
Controlling Hardware Acceleration
You can control hardware acceleration at the following levels:
Application
Activity
Window
View
Application level
<application android:hardwareAccelerated="true" ...>
Activity level
<application android:hardwareAccelerated="true">
<activity ... />
<activity android:hardwareAccelerated="false" />
</application>
Window level
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
View level
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Solution 3
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.
Comments
-
simekadam almost 2 years
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..Do you know where could be the problem? I tried many different devices including those running latest 4.3 Android..It look everywhere the same:/
-
simekadam over 10 yearsYou are a wizard..Or are you just way better at using Google:) Thanks
-
stoefln over 10 yearsstumbled over the same issue- months ago ;)
-
Boris Treukhov over 8 yearsThe second solution really works on view level but it's not clear where to apply tag from the first solution.
-
ror about 5 yearsUpvoting. In my case it was
android:layerType="software"
-
CoolMind over 4 yearsSee stackoverflow.com/questions/10843402/…. Don't use
android:hardwareAccelerated="false"
, useandroid:layerType="software"
in a view. -
Pir Fahim Shah about 4 yearsperfect answer. working 100%. Great job brother. Keep up your posting for question like this