2012-06-01 24 views
22

Quello che segue è una linea tratteggiata, definito come uno ShapeDrawable in XML:Android linea tratteggiata drawable potenziale ICS bug

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line"> 

    <size 
     android:height="2dp" 
     android:width="700dp" /> 

    <stroke 
     android:width="1dp" 
     android:color="@android:color/black" 
     android:dashWidth="1dp" 
     android:dashGap="2dp" /> 

</shape> 

Questo attirerà una bella linea tratteggiata su diversi telefoni Gingerbread. Tuttavia, sul Galaxy Nexus, i trattini sembrano ignorati e la forma viene disegnata come una linea contigua. Ancora più curioso, un emulatore che esegue ICS lo renderà correttamente con i trattini, è solo il dispositivo fisico che sta rovinando.

Mi manca qualcosa di ovvio? O è davvero un bug con Android 4.0? La linea è usata in diversi posti. Ecco un esempio ImageView:

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/observation_observe_side_margin" 
    android:layout_marginRight="@dimen/observation_observe_side_margin" 
    android:layout_marginTop="16dp" 
    android:contentDescription="@string/dotted_line_description" 
    android:src="@drawable/dotted_line" /> 
+0

Sto notando lo stesso problema sulla mia app sul Galaxy Nexus. Sugli altri dispositivi, i dispositivi 2.x vengono visualizzati come puntati. –

+0

duplicato di http://stackoverflow.com/a/26296229/185022 –

+0

possibile duplicato di [La linea punteggiata non è effettivamente puntata quando l'app è in esecuzione sul dispositivo Android reale] (http://stackoverflow.com/questions/18931679/dotted -line-is-really-not-puned-quando-app-is-running-on-real-android-device) –

risposta

43

Il problema connesso a http://code.google.com/p/android/issues/detail?id=29944 ha un commento di applicare quanto segue per la visualizzazione:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

Questo ha funzionato per me.

+27

Si noti che se non si desidera modificare la vista a livello di codice, è possibile anche aggiungere l'attributo 'android: layerType =" software "' alla definizione XML. – Arkaaito

+0

API 11+ http://developer.android.com/reference/android/view/View.html#setLayerType – Dori

+0

quindi nell'esempio nella domanda. avresti impostato 'android: layerType =" software "' su 'ImageView' o' shape'? –

Problemi correlati