मैं एंड्रॉइड में एक बिंदीदार / धराशायी लाइन कैसे बना सकता हूं?


254

मैं एक बिंदीदार रेखा बनाने की कोशिश कर रहा हूं। मैं अभी एक ठोस लाइन के लिए इस का उपयोग कर रहा हूँ:

LinearLayout divider = new LinearLayout( this );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, 2 );
divider.setLayoutParams( params );
divider.setBackgroundColor( getResources().getColor( R.color.grey ) );

मुझे ऐसा कुछ चाहिए, लेकिन ठोस के बजाय बिंदीदार। मैं पारदर्शी लेआउट और ठोस लेआउट के बीच बारी-बारी से सैकड़ों लेआउट बनाने से बचना चाहता हूँ।

जवाबों:


515

बिना जावा कोड:

drawable / 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="#C7B299"
       android:dashWidth="10px"
       android:dashGap="10px"
       android:width="1dp"/>
</shape>

view.xml:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="5dp"
    android:src="@drawable/dotted"
    android:layerType="software" />

21
मुझे समझ नहीं आ रहा है कि मुझे अपने फोन पर बिना अंतराल के एक लाइन क्यों मिल रही है, जबकि मैं ग्रहण में ग्राफिकल लेआउट में अंतराल देख रहा हूं।
डांटे

73
कोई बात नहीं, मैंने इसका समाधान यहां पाया है: stackoverflow.com/questions/10843402/… बस सॉफ्टवेयर के लिए परत प्रकार सेट करें: Android: layerType = "सॉफ्टवेयर"
Dante

7
उपयोग करते समय एक ज्ञात बग हैcanvas.drawLine() । हार्डवेयर त्वरण को निष्क्रिय करने के विकल्प के रूप में, आप canvas.drawPathइसके बजाय उपयोग कर सकते हैं ।
hgoebl

10
के dp बजाय का उपयोग करें px
S.M_Emamian

7
सत्यापित है कि यह एंड्रॉइड 6.0.1 और 4.4.4 दोनों पर काम करता है। ध्यान देने योग्य दो बातें: 1) आपको वास्तव में ImageView की जरूरत है, यह देखने योग्य है कि पृष्ठभूमि के साथ एक दृश्य ऐसा नहीं किया; 2) android:layerType="software"ImageView पर सेट किया जाना चाहिए।
Jonik

206

पथ प्रभाव पेंट ऑब्जेक्ट पर सेट किया गया है

Paint fgPaintSel = new Paint();
fgPaintSel.setARGB(255, 0, 0,0);
fgPaintSel.setStyle(Style.STROKE);
fgPaintSel.setPathEffect(new DashPathEffect(new float[] {10,20}, 0));

आप int [] सरणी में अधिक संख्याओं की आपूर्ति करके सभी प्रकार के बिंदीदार पैटर्न बना सकते हैं यह डैश और गैप के अनुपात को निर्दिष्ट करता है। यह एक सरल, समान रूप से धराशायी, रेखा है।


अब यह मेरे लिए क्यों है? stackoverflow.com/questions/12401311/…
क्रिस.ज़ौ

नए फ्लोट की कोशिश करें [] {5,10,15,20} कंस्ट्रक्टर में
सिलिकॉन

4
मैं Android विकास में थोड़ा नया हूं। मैं पूछना चाहता हूं कि धराशायी प्रभाव वाली पेंट ऑब्जेक्ट को मेरे द्वारा बनाए गए रैखिक लेआउट में कैसे जोड़ा जाता है?
डिर्कजैन

मैंने इस कोड को सीधे कॉपी और पेस्ट किया, लेकिन कुछ नहीं हुआ। क्या मुझे इसे काम करने के लिए अतिरिक्त कोड लिखना चाहिए?
jason

50

XML का उपयोग करके बिंदीदार रेखा बनाना।
ड्रा करने योग्य फ़ोल्डर में xml बनाएं और उस पृष्ठभूमि को उस आइटम को दें जिसे आप बिंदीदार सीमा सेट करना चाहते हैं।

XML पृष्ठभूमि बनाना "dashed_border":

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="#ffffff" />
            <stroke
                android:dashGap="5dp"
                android:dashWidth="5dp"
                android:width="1dp"
                android:color="#0000FF" />
            <padding
                android:bottom="5dp"
                android:left="5dp"
                android:right="5dp"
                android:top="5dp" />
        </shape>
    </item>
</layer-list>

उस पृष्ठभूमि को आइटम में जोड़ना:

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dashed_border"/>

यदि आपको कोनों के लिए त्रिज्या की आवश्यकता है, तो बस <corners android:radius="5dp" />अपने आकार में जोड़ें । अधिक जानकारी के लिए stackoverflow.com/a/41940609/1000551 देखें
वादिम कोटोव

मुझे लगता है कि परत-सूची किसी एक आइटम के लिए अनावश्यक है। मैंने मूल तत्व के रूप में <आकार> का उपयोग किया और यह समान काम करता है।
big_m

37

Xml बनाएं (view_line_dotted.xml):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:bottom="-1dp"
            android:left="-1dp"
            android:right="-1dp"
            android:top="0dp">

            <shape android:shape="rectangle">
                <stroke
                    android:width="1dp"
                    android:color="#ffff0017"
                    android:dashGap="3dp"
                    android:dashWidth="1dp" />

                <solid android:color="@android:color/transparent" />

                <padding
                    android:bottom="10dp"
                    android:left="10dp"
                    android:right="10dp"
                    android:top="10dp" />
            </shape>
        </item>
</layer-list>

अपने दृश्य की पृष्ठभूमि के रूप में सेट करें:

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@drawable/view_line_dotted" />

क्या आप इसे समझा सकते हैं?
आसमानी जूल 13'15

1
धन्यवाद, सुराग है <item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >, यदि आप एक क्षैतिज रेखा 1dp मोटाई चाहते हैं।
कूलमाइंड

बहुत बढ़िया। लगभग मेरे लिए बॉक्स से बाहर काम करता है। एकमात्र परिवर्तन जो मुझे चाहिए था वह था स्ट्रोक टैग को बदलना; 2dp चौड़ाई और 4dp डैशगैप।
सूफियान

API के साथ उपकरणों के लिए <21 android:layerType="software"एक दृश्य में जोड़ें या लिखें view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)(देखें stackoverflow.com/questions/10843402/… )।
कूलमाइंड

24

जब मैं एक बिंदीदार रेखा खींचना चाहता था, तो मैंने एक drawable dash_line.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="2dp"
    android:width="1dp"
    android:color="@color/black" />
</shape>

और फिर लेआउट में सिर्फ डैश_लाइन के रूप में पृष्ठभूमि के साथ एक दृश्य को परिभाषित करें । Android को शामिल करने के लिए नोट करें : लेयरटेप = "सॉफ्टवेयर" , अन्यथा यह काम नहीं करेगा।

<View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:background="@drawable/dash_line"
            android:layerType="software" />

धन्यवाद दोस्त! android:layerType="software"बात मैं के लिए देख रहा था है! चीयर्स!
टोलका

20

मेरे पास एक डैशलाइन है जो क्षैतिज और मौखिक डैश लाइन का समर्थन करती है। नीचे कोड:

public class DashedLineView extends View
{
private float density;
private Paint paint;
private Path path;
private PathEffect effects;

public DashedLineView(Context context)
{
    super(context);
    init(context);
}

public DashedLineView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    init(context);
}

public DashedLineView(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    init(context);
}

private void init(Context context)
{
    density = DisplayUtil.getDisplayDensity(context);
    paint = new Paint();
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(density * 4);
    //set your own color
    paint.setColor(context.getResources().getColor(R.color.XXX));
    path = new Path();
    //array is ON and OFF distances in px (4px line then 2px space)
    effects = new DashPathEffect(new float[] { 4, 2, 4, 2 }, 0);

}

@Override
protected void onDraw(Canvas canvas)
{
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    paint.setPathEffect(effects);
    int measuredHeight = getMeasuredHeight();
    int measuredWidth = getMeasuredWidth();
    if (measuredHeight <= measuredWidth)
    {
        // horizontal
        path.moveTo(0, 0);
        path.lineTo(measuredWidth, 0);
        canvas.drawPath(path, paint);
    }
    else
    {
        // vertical
        path.moveTo(0, 0);
        path.lineTo(0, measuredHeight);
        canvas.drawPath(path, paint);
    }

}
}

क्या यह दृष्टिकोण xml आकार से अधिक बेहतर है?
इगोरगानापोलस्की

उत्तम! मैं क्या देख रहा था
जॉब एम

9

इस वर्ग का उपयोग करके आप कई लाइनों के पाठ में "धराशायी और रेखांकित" प्रभाव को लागू कर सकते हैं। DashPathEffect का उपयोग करने के लिए आपको अपने TextView के हार्डवेयर को बंद करना होगा (हालांकि DashPathEffect पद्धति में लंबे पाठ की समस्या है)। आप यहाँ मेरा नमूना प्रोजेक्ट पा सकते हैं: https://github.com/jintoga/Dashed-Underilt-TextView/blob/master/Untitled.png

public class DashedUnderlineSpan implements LineBackgroundSpan, LineHeightSpan {

    private Paint paint;
    private TextView textView;
    private float offsetY;
    private float spacingExtra;

    public DashedUnderlineSpan(TextView textView, int color, float thickness, float dashPath,
                               float offsetY, float spacingExtra) {
        this.paint = new Paint();
        this.paint.setColor(color);
        this.paint.setStyle(Paint.Style.STROKE);
        this.paint.setPathEffect(new DashPathEffect(new float[] { dashPath, dashPath }, 0));
        this.paint.setStrokeWidth(thickness);
        this.textView = textView;
        this.offsetY = offsetY;
        this.spacingExtra = spacingExtra;
    }

    @Override
    public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v,
                             Paint.FontMetricsInt fm) {
        fm.ascent -= spacingExtra;
        fm.top -= spacingExtra;
        fm.descent += spacingExtra;
        fm.bottom += spacingExtra;
    }

    @Override
    public void drawBackground(Canvas canvas, Paint p, int left, int right, int top, int baseline,
                               int bottom, CharSequence text, int start, int end, int lnum) {
        int lineNum = textView.getLineCount();
        for (int i = 0; i < lineNum; i++) {
            Layout layout = textView.getLayout();
            canvas.drawLine(layout.getLineLeft(i), layout.getLineBottom(i) - spacingExtra + offsetY,
                    layout.getLineRight(i), layout.getLineBottom(i) - spacingExtra + offsetY,
                    this.paint);
        }
    }
}

परिणाम:

धराशायी हो गया


8

यदि आप वर्टिकल लाइन की तलाश में हैं तो इस ड्रॉबल का उपयोग करें।

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="-8dp"
        android:bottom="-8dp"
        android:left="-8dp">
        <shape>
            <solid android:color="@android:color/transparent"/>
            <stroke
                android:width="4dp"
                android:color="#ffffff"
                android:dashGap="4dp"
                android:dashWidth="4dp"/>
        </shape>
    </item>
</layer-list>

नकारात्मक शीर्ष नीचे और बाएं मान एक धराशायी रेखा को छोड़ते हुए आकृति के अवांछित पक्षों को हटाते हैं।

इस तरह से एक दृश्य में इसका उपयोग करें।

<View
android:layout_width="4dp"
android:layout_height="match_parent"
android:background="@drawable/dash_line_vertical"
android:layerType="software" />

4

मैंने लेआउट के लिए पृष्ठभूमि के रूप में नीचे का उपयोग किया है:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
<stroke
   android:width="1dp"
    android:dashWidth="10px"
   android:dashGap="10px"
    android:color="android:@color/black" 
   />
</shape>

android:shape="rectangle"लाइन के बजाय क्यों ?
इगोरगानापोलस्की

4

मैंने EditText के लिए धराशायी बिंदीदार रेखा बनाई है। हेयर यू गो। अपनी नई xml बनाएं। उदाहरणार्थ dashed_border.xml कोड यहां:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:bottom="1dp"
    android:left="-2dp"
    android:right="-2dp"
    android:top="-2dp">
    <shape android:shape="rectangle">
        <stroke
            android:width="2dp"
            android:color="#000000"
            android:dashGap="3dp"
            android:dashWidth="1dp" />

        <solid android:color="#00FFFFFF" />

        <padding
            android:bottom="10dp"
            android:left="10dp"
            android:right="10dp"
            android:top="10dp" />
    </shape>
</item></layer-list>

और उदाहरण के लिए अपने EditText में अपनी नई xml फ़ाइल का उपयोग करें:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/dashed_border"/>

चीयर्स! :)



3

बिंदीदार पृष्ठभूमि के लिए सबसे अच्छा समाधान सही काम कर रहा है

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
  <stroke
    android:dashGap="3dp"
    android:dashWidth="2dp"
    android:width="1dp"
    android:color="@color/colorBlack" />
</shape>

3

कैनवास पर एक डॉटेड प्रभाव के लिए, इस विशेषता को पेंट ऑब्जेक्ट पर सेट करें:

paint.setPathEffect(new DashPathEffect(new float[] {0,30}, 0));

और अपने रेंडर सूट के रूप में 30 मान बदलें: यह प्रत्येक डॉट्स के बीच "दूरी" का प्रतिनिधित्व करता है।

यहां छवि विवरण दर्ज करें


2

केवल एक चीज जो मेरे लिए काम करती है और मुझे लगता है कि यह सबसे सरल तरीका है, इस तरह से पेंट ऑब्जेक्ट के साथ एक पथ का उपयोग कर रहा है:

    Paint paintDash = new Paint();
    paintDash.setARGB(255, 0, 0, 0);
    paintDash.setStyle(Paint.Style.STROKE);
    paintDash.setPathEffect(new DashPathEffect(new float[]{10f,10f}, 0));
    paintDash.setStrokeWidth(2);
    Path pathDashLine = new Path();

फिर onDraw (): (महत्वपूर्ण कॉल रिसेट यदि आप ऑनरिट कॉल के बीच उन बिंदुओं को बदलते हैं, तो पथ सभी आंदोलनों को बचाते हैं)

    pathDashLine.reset();
    pathDashLine.moveTo(porigenX, porigenY);
    pathDashLine.lineTo(cursorX,cursorY);
    c.drawPath(pathDashLine, paintDash);

2

मुझे रुइज से समाधान पसंद आया , लेकिन मुझे एक्सएमएल से अधिक नियंत्रण की आवश्यकता थी। इसलिए मैंने इसे कोटलिन में जोड़ा और विशेषताओं को जोड़ा।

1) कोटलिन वर्ग की प्रतिलिपि बनाएँ:

import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import android.view.View

class DashedDividerView : View {
constructor(context: Context) : this(context, null, 0)
constructor(context: Context, attributeSet: AttributeSet) : this(context, attributeSet, 0)

companion object {
    const val DIRECTION_VERTICAL = 0
    const val DIRECTION_HORIZONTAL = 1
}

private var dGap = 5.25f
private var dWidth = 5.25f
private var dColor = Color.parseColor("#EE0606")
private var direction = DIRECTION_HORIZONTAL
private val paint = Paint()
private val path = Path()

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
    context,
    attrs,
    defStyleAttr
) {
    val typedArray = context.obtainStyledAttributes(
        attrs,
        R.styleable.DashedDividerView,
        defStyleAttr,
        R.style.DashedDividerDefault
    )

    dGap = typedArray.getDimension(R.styleable.DashedDividerView_dividerDashGap, dGap)
    dWidth = typedArray.getDimension(R.styleable.DashedDividerView_dividerDashWidth, dWidth)
    dColor = typedArray.getColor(R.styleable.DashedDividerView_dividerDashColor, dColor)
    direction =
        typedArray.getInt(R.styleable.DashedDividerView_dividerDirection, DIRECTION_HORIZONTAL)

    paint.color = dColor
    paint.style = Paint.Style.STROKE
    paint.pathEffect = DashPathEffect(floatArrayOf(dWidth, dGap), 0f)
    paint.strokeWidth = dWidth

    typedArray.recycle()
}

override fun onDraw(canvas: Canvas) {
    super.onDraw(canvas)
    path.moveTo(0f, 0f)

    if (direction == DIRECTION_HORIZONTAL) {
        path.lineTo(measuredWidth.toFloat(), 0f)
    } else {
        path.lineTo(0f, measuredHeight.toFloat())
    }
    canvas.drawPath(path, paint)
}

}

2) / Res निर्देशिका में एक attr फ़ाइल बनाएँ और इसे जोड़ें

 <declare-styleable name="DashedDividerView">
    <attr name="dividerDashGap" format="dimension" />
    <attr name="dividerDashWidth" format="dimension" />
    <attr name="dividerDashColor" format="reference|color" />
    <attr name="dividerDirection" format="enum">
        <enum name="vertical" value="0" />
        <enum name="horizontal" value="1" />
    </attr>
</declare-styleable>

3) स्टाइल फ़ाइल में एक शैली जोड़ें

 <style name="DashedDividerDefault">
    <item name="dividerDashGap">2dp</item>
    <item name="dividerDashWidth">2dp</item>
    <!-- or any color -->
    <item name="dividerDashColor">#EE0606</item>
    <item name="dividerDirection">horizontal</item>
</style>

4) अब आप डिफ़ॉल्ट शैली का उपयोग कर सकते हैं

<!-- here will be your path to the class -->
<com.your.package.app.DashedDividerView
    android:layout_width="match_parent"
    android:layout_height="2dp"
    />

या XML में सेट विशेषताएँ

<com.your.package.app.DashedDividerView
    android:layout_width="match_parent"
    android:layout_height="2dp"
    app:dividerDirection="horizontal"
    app:dividerDashGap="2dp"
    app:dividerDashWidth="2dp"
    app:dividerDashColor="@color/light_gray"/>

2

इनमें से किसी भी जवाब ने मेरे लिए काम नहीं किया। इनमें से अधिकांश उत्तर आपको एक अर्ध-पारदर्शी सीमा प्रदान करते हैं। इससे बचने के लिए, आपको अपने कंटेनर को एक बार फिर अपने पसंदीदा रंग के साथ दूसरे कंटेनर से लपेटने की आवश्यकता है। यहाँ एक उदाहरण है:

इस तरह दिखता है

dashed_border_layout.xml

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/black"
android:background="@drawable/dashed_border_out">
<LinearLayout
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:padding="5dp"
    android:background="@drawable/dashed_border_in"
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is&#10;Dashed Container"
        android:textSize="16sp" />
</LinearLayout>

dashed_border_in.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape>
        <corners android:radius="10dp" />
        <solid android:color="#ffffff" />
        <stroke
            android:dashGap="5dp"
            android:dashWidth="5dp"
            android:width="3dp"
            android:color="#0000FF" />
        <padding
            android:bottom="5dp"
            android:left="5dp"
            android:right="5dp"
            android:top="5dp" />
    </shape>
</item>

dashed_border_out.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape>
        <corners android:radius="12dp" />
    </shape>
</item>


1

मैं नहीं जानता कि क्यों लेकिन जवाब दिया वोट मेरे लिए काम नहीं करते। मैं इसे इस तरह से लिखता हूं और अच्छा काम करता हूं।
एक कस्टम दृश्य परिभाषित करें:

public class XDashedLineView extends View {

private Paint   mPaint;
private Path    mPath;
private int     vWidth;
private int     vHeight;

public XDashedLineView(Context context) {
    super(context);
    init();
}

public XDashedLineView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public XDashedLineView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init() {
    mPaint = new Paint();
    mPaint.setColor(Color.parseColor("#3F577C"));
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setPathEffect(new DashPathEffect(new float[] {10,10}, 0));
    mPath = new Path();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    this.vWidth = getMeasuredWidth();
    this.vHeight = getMeasuredHeight();
    mPath.moveTo(0, this.vHeight / 2);
    mPath.quadTo(this.vWidth / 2, this.vHeight / 2, this.vWidth, this.vHeight / 2);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawPath(mPath, mPaint);
}
}

तो आप इसे अपने xml में उपयोग कर सकते हैं:

        <com.YOUR_PACKAGE_NAME.XDashedLineView
        android:layout_width="690dp"
        android:layout_height="1dp"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="620dp"/>

1

मैंने इस समस्या को हल करने के लिए एक कस्टम दृश्य के साथ एक पुस्तकालय बनाया है, और इसका उपयोग करने के लिए बहुत सरल होना चाहिए। अधिक के लिए https://github.com/Comcast/DahDit देखें । आप इस तरह धराशायी लाइनों को जोड़ सकते हैं:

<com.xfinity.dahdit.DashedLine
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    app:dashHeight="4dp"
    app:dashLength="8dp"
    app:minimumDashGap="3dp"
    app:layout_constraintRight_toRightOf="parent"
    android:id="@+id/horizontal_dashes"/>

साझा करने के लिए धन्यवाद। मैं इसे अपने उपयोग के मामले के लिए परिष्कृत करने जा रहा हूं, लेकिन यह वही है जो मुझे कस्टम दृश्यों के साथ शुरू करने के लिए आवश्यक था। चीयर्स।

0

Tier777 के समान यहाँ एक क्षैतिज रेखा के लिए एक समाधान है:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-1dp">
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#111"
                android:dashWidth="8dp"
                android:dashGap="2dp"
                />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

सुराग है <item android:top="-1dp">

पुराने उपकरणों पर धराशायी लाइन दिखाने के लिए (<= API 21) आपको एक दृश्य बनाना चाहिए android:layerType="software"(देखें Android dashed line drawable potential ICS बग ):

<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@drawable/dashed_line"
    android:layerType="software"
    />

इसके अलावा, आप बिना एक ही दृश्य में जोड़ सकते हैं android:layerType="software"करने के लिए layout-v23बेहतर प्रदर्शन के लिए, लेकिन मैं नहीं यकीन है कि यह एपीआई 23 के साथ सभी उपकरणों पर काम करेंगे कर रहा हूँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.