2013-09-21 22 views
19

nella mia app. Uso la linea tratteggiata verticale definita da XML.La linea tratteggiata in realtà non è puntata quando l'app è in esecuzione sul dispositivo Android reale

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

Quando sto fare i difficili il mio layout in Android Studio, la linea è reso correttamente punteggiata, come dovrebbe, ma il problema viene fuori quando ho eseguito l'app sul dispositivo reale. La linea è solida senza vuoti ... Sai dove potrebbe essere il problema? Ho provato molti dispositivi diversi inclusi quelli con Android 4.3 di ultima generazione. Sembra ovunque lo stesso:/

+0

n necessaria per controllare l'accelerazione hardware [Ciò risolto problema della linea tratteggiata] (http://stackoverflow.com/questions/24536617/android- l-is-not-able-to-draw-punteggiato-line-as-drawable-background) –

risposta

45

Questo è probabilmente correlato all'accelerazione hardware: le linee tratteggiate non sono supportate in modalità GL.

suo documentato qui: https://code.google.com/p/android/issues/detail?id=29944

Spegnere il HW-accelerazione tuoi AndroidManifest.xml come questo:

android:hardwareAccelerated="false" 

o:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

Per ulteriori informazioni su come utilizzare prima soluzione: http://developer.android.com/guide/topics/graphics/hardware-accel.html

+1

Sei un mago ..O sei semplicemente migliore nell'usare Google :) Grazie – simekadam

+1

inciampato per lo stesso numero mesi fa;) – stoefln

+0

Non funziona ... :( – MohsinSyd

15

Controllo accelerazione hardware

È possibile controllare l'accelerazione hardware ai seguenti livelli:

  • Applicazione

  • Attività

  • Finestra

  • View

livello di applicazione

<application android:hardwareAccelerated="true" ...> 

livello di attività

<application android:hardwareAccelerated="true"> 
    <activity ... /> 
    <activity android:hardwareAccelerated="false" /> 
</application> 

livello Finestra

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, 
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 

View livello

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

Reference