2013-08-26 10 views
7

w moim układzie Próbuję narysować DOTTED LINE.do rysowania linii poziomej definiuję widok w moim pliku układu.Tworzenie poziomej linii przerywanej w układzie androidowym

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

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

Ale ja nie dostać dowolną linię za pomocą tego kodu. proszę pomóż mi.

Gdy używam customdots.xml w ListView Divider- jak

android:divider="@drawable/customdots" 

to pokazuje dobrą linią kropkowaną

+0

ANDROID lewy = "10dp" ANDROID właściwej = "10dp" androida : width = "4dp" czy to ma sens? – pskink

+0

@pskink co powinno być Twoim zdaniem. – test

+0

tylko w lewo i w prawo? – pskink

Odpowiedz

0

można użyć następujących kodu. może ci pomóc. Tworzenie dotted.xml w rozciągliwej folderze jak to ...

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

następnie użyć tego xml w układzie z obrazu widok jak ten ....

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

Nadal nie widzę widocznej linii. pokazuje widok obrazu bez obrazu. To samo z moim powyższym kodem. – test

+0

to samo tutaj. Być może działało to na starszej wersji Androida? –

+0

@SAURABH Dlaczego używasz ImageView do dzielenia zamiast widoku? –

45

I ciągnął mnie za włosy na również ten problem, dopóki nie zorientowałem się, że jest błąd w najnowszych wersjach Androida podczas renderowania linii takich jak ta.

Ten błąd można obejść, dodając do widoku, który używa linii przerywanej jako tła, android: layerType = "software".

przykład:

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

dzięki .. zaoszczędziłem mój czas ... – BSKANIA

+0

Geniusz, dziękuję. – Lara

+2

ndroid: layerType = "software" jest kluczem –

Powiązane problemy