2013-09-21 74 views
19

在我的應用程序中我使用XML定義的垂直虛線。當應用程序在真實的Android設備上運行時,虛線實際上並不是虛線

<?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

沒有需要控制硬件加速[這將解決虛線的問題(http://stackoverflow.com/questions/24536617/android-我不能畫點線作爲背景) –

回答

45

這很可能與硬件加速有關:在GL模式中不支持虛線。

其記錄在這裏: https://code.google.com/p/android/issues/detail?id=29944

關閉您的硬件加速在AndroidManifest.xml中是這樣的:

android:hardwareAccelerated="false" 

或:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

欲瞭解更多信息,如何使用第一種解決方案: http://developer.android.com/guide/topics/graphics/hardware-accel.html

+1

你是一個巫師..或者你只是更好地使用谷歌:)謝謝 – simekadam

+1

偶然發現同一問題 - 幾個月前;) – stoefln

+0

不工作... :( – MohsinSyd

15

控制硬件加速

您可以控制在以下級別硬件加速:

  • 應用

  • 活動

  • 窗口

  • 查看

應用水平

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

Reference

相關問題