2013-08-26 2 views
7

в моем макете Я пытаюсь нарисовать DOTTED LINE.for чертежа горизонтальной линии Я определяю представление в своем файле макета.Создайте горизонтальную пунктирную линию в макете android

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

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

Но я не получаю строку, используя этот код. пожалуйста, помогите мне.

Когда я использую customdots.xml в ListView делителем, как

android:divider="@drawable/customdots" 

он показывает хорошую пунктирная линия

+0

Android: левый = "10dp" Android: правый = "10dp" андроид : width = "4dp" это имеет смысл? – pskink

+0

@pskink, что это должно быть по вашему мнению. – test

+0

только левый и правый? – pskink

ответ

0

Вы можете использовать следующий код. это может помочь вам. Создать dotted.xml в вытяжке папку, как это ...

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

затем использовать этот XML в макете с точки зрения изображения, как это ....

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

Я до сих пор не вижу видимой строки. он показывает изображение без изображения. То же самое с моим кодом выше. – test

+0

такой же здесь. Возможно, это работало на более старой версии Android? –

+0

@SAURABH Почему вы используете ImageView для divider вместо View? –

45

Я потянув меня за волосы на эта проблема тоже до тех пор, пока я не выясню, что в последних версиях Android появилась ошибка при рендеринге строк.

Эта ошибка может быть обойдена путем добавления android: layerType = "software" к представлению, которое использует пунктирную линию в качестве фона.

Пример:

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

спасибо .. это сэкономило мое время ... – BSKANIA

+0

Гений, спасибо. – Lara

+2

ndroid: layerType = «программное обеспечение» - это ключ –