2013-08-26 28 views
7

nel mio layout Sto provando a disegnare una LINEA DOTTATA. Per disegnare una linea orizzontale sto definendo una vista nel mio file di layout.Creare una linea tratteggiata orizzontale nel layout di Android

 <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dip" 
     android:background="@drawable/customdots" /> 

e customdots.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
    android:left="10dp" 
    android:right="10dp" 
    android:width="4dp" 
    android:drawable="@drawable/dotted" /> 

</layer-list> 

dotted.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="line" > 

    <size 
    android:height="4dp" 
    android:width="1024dp"/> 
    <stroke 
    android:width="4dp" 
    android:dashWidth="4dp" 
    android:color="@android:color/black" 
    android:dashGap="5dp"/> 

</shape> 

Ma non ho ricevuto alcuna line utilizzando questo codice. per favore aiutatemi.

Quando uso customdots.xml nel listView Divisore come

android:divider="@drawable/customdots" 

mostra una buona linea tratteggiata

+0

android: sinistra = "10dp" android: destro = "10dp" Android : width = "4dp" ha senso? – pskink

+0

@pskink quale dovrebbe essere secondo la tua opinione. – test

+0

solo sinistra e destra? – pskink

risposta

0

È possibile utilizzare seguente codice. potrebbe aiutarti. Creare una dotted.xml nella cartella drawable come questo ...

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line" > 
     <stroke 
     android:color="#A52A2A" 
     android:dashWidth="10px" 
     android:dashGap="10px" /> 

</shape> 

quindi utilizzare questo XML nel layout con visualizzazione dell'immagine come questo ....

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="This is above line of code " /> 
    <ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="3dp" 
    android:layout_marginBottom="3dp" 
    android:src="@drawable/dottede" /> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="this is below code " /> 
</LinearLayout> 
+1

Non riesco ancora a ottenere una linea visibile. mostra una vista dell'immagine senza immagine. La stessa cosa con il mio codice precedente. – test

+0

stesso qui. Forse questo ha funzionato su una versione precedente di Android? –

+0

@SAURABH Perché stai usando ImageView per il divisore invece di Visualizza? –

45

stavo tirando i capelli su anche questo problema fino a quando ho capito che c'è un bug nelle ultime versioni di Android durante il rendering di righe come questa.

Questo errore può essere aggirato aggiungendo android: layerType = "software" alla vista che utilizza la linea tratteggiata come sfondo.

Esempio:

dotted.xml:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="line"> 

<stroke 
    android:dashGap="3dp" 
    android:dashWidth="8dp" 
    android:height="2px" 
    android:color="#FFFFFF" /> 

</shape> 

layout.xml:

<View 
     android:id="@+id/vDottedLine" 
     android:background="@drawable/dotted" 
     android:layout_width="match_parent" 
     android:layout_height="2px" 
     android:layerType="software" /> 
+0

grazie .. mi ha salvato il tempo ... – BSKANIA

+0

genio, grazie. – Lara

+2

ndroid: layerType = "software" è la chiave –

Problemi correlati