Dotted line is actually not dotted when app is running on real Android device

10,435

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);

Reference

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.

Share:
10,435
simekadam
Author by

simekadam

Android developer at Avast Mobile.

Updated on June 27, 2022

Comments

  • simekadam
    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
    simekadam over 10 years
    You are a wizard..Or are you just way better at using Google:) Thanks
  • stoefln
    stoefln over 10 years
    stumbled over the same issue- months ago ;)
  • Boris Treukhov
    Boris Treukhov over 8 years
    The second solution really works on view level but it's not clear where to apply tag from the first solution.
  • ror
    ror about 5 years
    Upvoting. In my case it was android:layerType="software"
  • CoolMind
    CoolMind over 4 years
    See stackoverflow.com/questions/10843402/…. Don't use android:hardwareAccelerated="false", use android:layerType="software" in a view.
  • Pir Fahim Shah
    Pir Fahim Shah about 4 years
    perfect answer. working 100%. Great job brother. Keep up your posting for question like this