มีวิธีง่าย ๆ ในการเพิ่มเส้นขอบไปด้านบนและด้านล่างของมุมมอง Android หรือไม่


407

ฉันมี TextView และฉันต้องการเพิ่มเส้นขอบสีดำตามแนวขอบด้านบนและด้านล่าง ฉันพยายามเพิ่มandroid:drawableTopและandroid:drawableBottomไปที่ TextView แต่นั่นทำให้มุมมองทั้งหมดกลายเป็นสีดำ

<TextView
    android:background="@android:color/green"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableTop="@android:color/black"
    android:drawableBottom="@android:color/black"
    android:text="la la la" />

มีวิธีเพิ่มขอบด้านบนและด้านล่างลงในมุมมอง (โดยเฉพาะ TextView) ใน Android หรือไม่?


2
มันน่าแปลกใจที่ไม่มีใครพูดถึงdividerVertical ! นี่คือสิ่งที่สร้างขึ้นโดย Android เพื่อให้ได้มาซึ่งวงเวียนแนวตั้ง COold ไม่ใช่เรื่องง่ายและคุณทำทุกอย่างในแผง "ออกแบบ" WYSIWYG ใน Android Studio
Fattie

note dividerVertical ถูกนำไปใช้ใน API 11
JPM

1
บางทีคุณสามารถแสดงวิธีใช้ dividerVertical
androidguy

คำตอบ:


430

ใน android 2.2 คุณสามารถทำสิ่งต่อไปนี้

สร้าง drawable xml เช่น /res/drawable/textlines.xml และกำหนดสิ่งนี้เป็นคุณสมบัติพื้นหลังของ TextView

<TextView
android:text="My text with lines above and below"
android:background="@drawable/textlines"
/>

/res/drawable/textlines.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FF000000" />
            <solid android:color="#FFDDDDDD" />

        </shape>
   </item>

   <item android:top="1dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FFDDDDDD" />
            <solid android:color="#00000000" />
        </shape>
   </item>

</layer-list>

ข้อเสียคือคุณต้องระบุสีพื้นหลังทึบเนื่องจากแผ่นใสจะไม่ทำงาน (อย่างน้อยฉันก็คิดว่าพวกเขาทำ แต่ฉันเข้าใจผิด) ในตัวอย่างข้างต้นคุณจะเห็นว่าสีทึบของรูปร่างแรก #FFdddddd ถูกคัดลอกในสีเส้นขีดรูปร่างที่ 2


11
โปรดดูโซลูชันนี้ซึ่งทำงานกับ TextViews ด้วยเช่นกันหากคุณต้องการเส้นขอบโดยรอบ: stackoverflow.com/questions/3263611/…
emmby

26
ลองใช้ดู android:color="@null"เพื่อหลีกเลี่ยงปัญหาพื้นหลังทึบ
Matt Briançon

@emmby: เมื่อทดสอบรหัสนี้บนแท็บเล็ตต้องใช้เวลาในการแสดงผลบนหน้าจอหลังจาก 1 วินาทีแสดงขอบเมื่อฉันเลื่อน
Chetan

5
เคล็ดลับหุ่นยนต์: color = "@ null" ไม่ได้ทำเคล็ดลับสำหรับฉันเพื่อรักษาความโปร่งใสและเพิ่งแสดงเส้นขอบที่ด้านหนึ่งของมุมมอง คำตอบจากผู้ใช้ 1051892 ด้านล่างทำหน้าที่ได้!
Rick Pastoor

8
วิธีนี้ทำให้เกิดเส้นขอบด้านซ้ายและขวาเช่นกัน - แม้ว่าจะบางกว่าก็ตาม
AlikElzin-kilaka

279

ฉันใช้เคล็ดลับเพื่อให้เส้นขอบแสดงนอกคอนเทนเนอร์ ด้วยเคล็ดลับนี้จะมีเพียงการลากเส้นดังนั้นฉากหลังจะแสดงให้เห็นถึงมุมมองพื้นฐาน

<?xml version="1.0" encoding="utf-8"?>
<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="1dp"
                android:color="#FF000000" />

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

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

</layer-list>

3
มันใช้งานได้ดีสำหรับฉันด้วยการปรับแต่งเล็กน้อยเพื่อทำให้เส้นนั้นบางลง
Jeff

1
เคล็ดลับที่ดีมากแม้ว่ามันอาจจะดีกว่าถ้าเราไม่จำเป็นต้องหลอกคอมพิวเตอร์เพื่อที่จะทำงานให้เสร็จ
Yukio Fukuzawa

ทำได้ดีมาก! สิ่งที่คุณควรดูคือรายการด้านซ้ายด้านบนด้านขวาด้านล่างควร - (ความกว้างของนิ้ว) dp
asakura89

ไม่แสดงเส้นขอบ - เพียงทำให้เนื้อหามุมมองของฉันดูเล็กลง :(
AlikElzin-kilaka

1
ทำได้ดีมากทำงานกับพื้นหลังโปร่งใส ทดสอบใน 2.2 และ 4.4.2 ควรจะครอบคลุมทั้งหมดในระหว่าง :)
มนุษย์

97

ตัวเลือกที่ 1: รูปร่าง Drawable

นี่เป็นตัวเลือกที่ง่ายที่สุดถ้าคุณต้องการเส้นขอบรอบ ๆ เค้าโครงหรือมุมมองที่คุณสามารถตั้งค่าพื้นหลัง สร้างไฟล์ XML ในdrawableโฟลเดอร์ที่มีลักษณะดังนี้:

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

    <solid android:color="#8fff93" />

    <stroke
        android:width="1px"
        android:color="#000" />

</shape>

คุณสามารถลบได้solidหากคุณไม่ต้องการเติม ชุดbackground="@drawable/your_shape_drawable"รูปแบบ / มุมมองของคุณ

ตัวเลือกที่ 2: มุมมองพื้นหลัง

นี่เป็นเคล็ดลับเล็กน้อยที่ฉันใช้ใน RelativeLayoutที่ผมเคยใช้ใน โดยทั่วไปคุณมีสี่เหลี่ยมจัตุรัสสีดำภายใต้มุมมองที่คุณต้องการให้ขอบแล้วให้มุมมองที่บางส่วน (ไม่ใช่ระยะขอบ!) ดังนั้นสี่เหลี่ยมสีดำจะแสดงผ่านที่ขอบ

เห็นได้ชัดว่าสิ่งนี้ทำงานได้อย่างถูกต้องหากมุมมองไม่มีพื้นที่โปร่งใส ถ้าเป็นเช่นนั้นฉันอยากจะแนะนำให้คุณเขียนแบบกำหนดเองBorderViewซึ่งจะวาดเส้นขอบเท่านั้น - ควรเป็นโค้ดสองสามบรรทัด

<View
    android:id="@+id/border"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/image"
    android:layout_alignLeft="@+id/image"
    android:layout_alignRight="@+id/image"
    android:layout_alignTop="@+id/main_image"
    android:background="#000" />

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_...
    android:padding="1px"
    android:src="@drawable/..." />

หากคุณสงสัยว่ามันจะadjustViewBounds=trueทำงานร่วมกับ แต่ก็ไม่สามารถทำงานได้ถ้าคุณต้องการที่จะมีพื้นหลังในทั้งหมดRelativeLayoutเนื่องจากมีข้อผิดพลาดที่หยุดคุณกรอกข้อมูลที่มีRelativeLayout Viewในกรณีนั้นฉันขอแนะนำShapedrawable

ตัวเลือก 3: 9-patch

ตัวเลือกสุดท้ายคือการใช้ 9-patchable แบบนี้:

คุณสามารถใช้มันในมุมมองที่คุณสามารถตั้งค่าandroid:background="@drawable/..."ใด ๆ และใช่มันต้องเป็น 6x6 - ฉันลอง 5x5 และไม่ได้ผล

ข้อเสียของวิธีนี้คือคุณไม่สามารถเปลี่ยนสีได้อย่างง่ายดาย แต่ถ้าคุณต้องการเส้นขอบแฟนซี (เช่นขอบที่ด้านบนและด้านล่างเช่นเดียวกับในคำถามนี้) คุณอาจไม่สามารถทำได้ด้วยShapedrawable ซึ่งไม่ได้มีประสิทธิภาพมาก

ตัวเลือก 4: มุมมองเสริม

ฉันลืมที่จะพูดถึงตัวเลือกที่ง่ายจริงๆถ้าคุณต้องการเส้นขอบด้านบนและด้านล่างมุมมองของคุณ คุณสามารถใส่มุมมองในแนวตั้งLinearLayout(ถ้ายังไม่ได้เพิ่ม) แล้วเพิ่มViews ว่างด้านบนและด้านล่างเช่นนี้:

<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>

4
9 แพทช์และรูปร่างที่สามารถวาดได้ก็โอเค แต่ฉันอยากจะแนะนำให้เพิ่มมุมมองหรือภาพตัวอย่างเพื่อแก้ปัญหาดังกล่าว เหตุผลก็คือคุณควรลบ <elements> ดังกล่าวออกจากเลย์เอาต์ของคุณเพื่อปรับปรุงการออกเลย์เอาต์และภาพเคลื่อนไหวใหม่ ฉันจะดึงสิ่งเหล่านี้ออกมาทันทีและนำไปใช้คล้ายกับตัวเลือก 1 หรือ 2
Emile

2
@Emile นั้นเป็นเรื่องจริง แต่ถ้าคุณใช้ ListView แบบกำหนดเองที่ไม่สนับสนุนตัวแบ่งมุมมองแบบง่ายก็ใช้ได้ ผลกระทบด้านประสิทธิภาพอยู่ถัดจากศูนย์โดยเฉพาะอย่างยิ่งถ้าคุณแน่ใจว่าจะลดความลึกของเค้าโครงลง นอกจากนี้ยังหลีกเลี่ยงข้อผิดพลาดด้วยตัวแบ่ง ListView ระหว่างอุปกรณ์ (ฉันเคยเห็นอุปกรณ์บางอย่างที่ไม่สนใจคุณสมบัตินี้)
Tom

คุณยังสามารถใช้รูปแบบตัวแสดงที่มีประสิทธิภาพกับ listviews เพื่อให้แน่ใจว่าคุณลดจำนวนการโทรไปยัง findViewByID ซึ่งมักเป็นสาเหตุของประสิทธิภาพของรายการที่ไม่ดี
Emile

ใน iOS คุณมีทางเดียวเท่านั้นที่จะทำได้ สำหรับ Android คุณควรทดสอบอย่างน้อยสี่ตัวในกรณีของฉันตัวเลือก 4 เป็นวิธีที่จะไป บางครั้ง drawable เป็นพื้นหลังค้างเพื่อแสดงผลให้ระวัง
Ratata Tata

1
ทำไม android ไม่มีวิธีแก้ปัญหาที่ง่ายที่สุดสำหรับสิ่งนั้น? เช่นเดียวกับในภาษาอื่น ๆ เช่น HTML, CSS หรืออะไรบางอย่าง JavaFX, WPF ......
Asif Mushtaq

95

หากต้องการเพิ่ม1dpเส้นขอบสีขาวที่ด้านล่างเท่านั้นและมีพื้นหลังแบบโปร่งใสคุณสามารถใช้สิ่งต่อไปนี้ซึ่งง่ายกว่าคำตอบส่วนใหญ่ที่นี่

สำหรับTextViewหรือมุมมองอื่น ๆ ให้เพิ่ม:

android:background="@drawable/borderbottom"

และในdrawableไดเรกทอรีเพิ่ม XML ต่อไปนี้ที่เรียกว่าborderbottom.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-2dp" android:left="-2dp" android:right="-2dp">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#ffffffff" />
            <solid android:color="#00000000" />
        </shape>
    </item>
</layer-list>

หากคุณต้องการชายแดนที่ด้านบนเปลี่ยนandroid:top="-2dp"ไปandroid:bottom="-2dp"

สีไม่จำเป็นต้องเป็นสีขาวและพื้นหลังไม่จำเป็นต้องโปร่งใสเช่นกัน

solidองค์ประกอบอาจไม่จำเป็นต้อง สิ่งนี้จะขึ้นอยู่กับการออกแบบของคุณ (ขอบคุณ V. Kalyuzhnyu)

โดยทั่วไป XML นี้จะสร้างเส้นขอบโดยใช้รูปร่างสี่เหลี่ยมผืนผ้า แต่จากนั้นดันด้านบนด้านขวาและด้านซ้ายเกินพื้นที่การเรนเดอร์สำหรับรูปร่าง นี่จะทำให้เห็นขอบด้านล่างเพียงอย่างเดียว


8
นี่เป็นทางออกที่ดีที่สุดเนื่องจากไม่ได้สร้างการถอนเงินมากเกินไปเหมือนกับที่อื่น ๆ
Greg Ennis

มีเหตุผลที่ตำแหน่งเชิงลบใหญ่เป็นสองเท่าของโรคหลอดเลือดสมองด้วย ( -2dpvs 1dp) หรือไม่? ดูเหมือนว่าจะทำงานเมื่อพวกเขามีจำนวนเท่ากัน ( -1และ1)
เดนิส Kniazhev

@DenisKniazhev: เมื่อใช้-2dpผลลัพธ์จะสะอาดเสมอ ฉันคิดว่ามีกรณีทดสอบที่ผลลัพธ์ไม่สะอาด ฉันจำไม่ได้ว่ามันเป็นหน้าจอที่มีความหนาแน่นต่ำหรือสูงหรือเป็น Android เวอร์ชันเก่า (อาจเป็น 2.x)
ทิกเกอร์

น่าสนใจ คุณรู้หรือไม่ว่านี่เป็นกรณีทั่วไปตัวอย่างเช่นถ้าฉันใช้4dpสำหรับความกว้างของเส้นขีดฉันควรใช้-8dpสำหรับการจัดตำแหน่งหรือไม่
เดนิส Kniazhev

1
@DenisKniazhev: (จากหน่วยความจำ) ดูเหมือนว่าการคำนวณจุดลอยตัวที่เป็นเพียงเล็กน้อยถึงเล็กหรือใหญ่ ซึ่งหมายความว่าค่าจะเป็นสิ่งที่จำเป็นที่มีค่าความกว้างของ-5dp 4pdมันก็จำเป็นที่จะต้องใหญ่กว่านี้นิดหน่อยเพื่อให้ได้มาซึ่งค่าลอยตัวที่ไม่ถูกต้อง
Tigger

36

คำตอบที่ยอมรับในปัจจุบันไม่ทำงาน มันสร้างเส้นขอบแนวตั้งบาง ๆ ที่ด้านซ้ายและด้านขวาของมุมมองอันเป็นผลมาจากการต่อต้านนามแฝง

รุ่นนี้ใช้งานได้อย่างสมบูรณ์แบบ นอกจากนี้ยังช่วยให้คุณสามารถตั้งค่าความกว้างของเส้นขอบได้อย่างอิสระและคุณสามารถเพิ่มเส้นขอบที่ด้านซ้าย / ขวาได้หากต้องการ ข้อเสียเปรียบเพียงอย่างเดียวคือมันไม่สนับสนุนความโปร่งใส

สร้าง drawable xml ที่/res/drawable/top_bottom_borders.xmlมีชื่อด้วยรหัสด้านล่างและกำหนดให้เป็นคุณสมบัติพื้นหลังของ TextView

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#DDDD00" /> <!-- border color -->
        </shape>
    </item>

    <item
        android:bottom="1dp" 
        android:top="1dp">   <!-- adjust borders width here -->
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />  <!-- background color -->
        </shape>
    </item>
</layer-list>

ทดสอบบน Android KitKat ผ่าน Marshmallow


วิธีทำภายในโปร่งใส?
Hitesh Sahu

1
@HiteshSahu ผมคิดว่าข้อเสียของการนี้คือการที่คุณจะต้องตรงกับพื้นหลังของรูปแบบที่มีพื้นหลังของวิดเจ็ตที่นี่
chntgomez

35

ดังนั้นฉันต้องการทำสิ่งที่แตกต่างกันเล็กน้อย: เส้นขอบด้านล่างเท่านั้นเพื่อจำลองตัวแบ่ง ListView ฉันแก้ไขคำตอบของ Piet Delport และได้รับสิ่งนี้:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item>
      <shape 
        android:shape="rectangle">
            <solid android:color="@color/background_trans_light" />    

        </shape>
   </item>

    <!-- this mess is what we have to do to get a bottom border only. -->
   <item android:top="-2dp"
         android:left="-2dp"
         android:right="-2dp"
         android:bottom="1px"> 
      <shape 
        android:shape="rectangle">    
            <stroke android:width="1dp" android:color="@color/background_trans_mid" />
            <solid android:color="@null" />
        </shape>
   </item>

</layer-list>

หมายเหตุใช้ px แทนที่จะเป็น dp เพื่อให้ได้ตัวแบ่งพิกเซลที่ 1 พิกเซล (DPI ของโทรศัพท์บางอันจะทำให้บรรทัด 1dp หายไป)


2
ที่รัก! ค่าของ"@color/background_trans_light"คืออะไร?
Shajeel Afzal

ไชโย @ phreakhead นี่ใช้งานได้จริงสำหรับฉัน! ไม่มีขอบด้านบนซ้ายหรือขวา สิ่งที่ฉันต้องการจริงๆขอบคุณ!
shanehoban

2
โปรดคุณช่วยอธิบายได้ว่าทำไมเมื่อคุณใส่ -2dp มันหายไปและเมื่อคุณใส่ -1dp มันยังคงปรากฏอยู่? ขอบคุณ!
Francisco Romero

9

เช่นเดียวกับ @Nic Hubbard กล่าวว่ามีวิธีที่ง่ายมากในการเพิ่มเส้นขอบ

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#000000" >
</View>

คุณสามารถเปลี่ยนความสูงและสีพื้นหลังเป็นสิ่งที่คุณต้องการ


8

คำตอบของฉันขึ้นอยู่กับรุ่น @Emile แต่ฉันใช้สีโปร่งใสแทนสีทึบ
ตัวอย่างนี้จะวาดเส้นขอบด้านล่าง 2dp

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <stroke  android:width="2dp"
                     android:color="#50C0E9" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
    <item  android:bottom="2dp" >
        <shape android:shape="rectangle" >
            <stroke  android:width="2dp"
                     android:color="@color/bgcolor" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

@ สี / bgcolorเป็นสีของพื้นหลังที่คุณวาดมุมมองของคุณกับเส้นขอบ

หากคุณต้องการเปลี่ยนตำแหน่งของเส้นขอบให้เปลี่ยนการชดเชยด้วย:

android:bottom="2dp"
android:top="2dp"
android:right="2dp"
android:left="2dp"

หรือรวมเข้าด้วยกันเพื่อให้มี 2 หรือมากกว่าพรมแดน:

android:bottom="2dp" android:top="2dp"

7

คุณสามารถตัดมุมมองใน FrameLayout จากนั้นตั้งค่าสีพื้นหลังของกรอบและขยายไปยังสิ่งที่คุณต้องการ อย่างไรก็ตามโดยค่าเริ่มต้น textview มีพื้นหลัง 'โปร่งใส' ดังนั้นคุณต้องเปลี่ยนสีพื้นหลังของ textview ด้วย


ค่อนข้างง่าย คุณสามารถควบคุมขนาดและทิศทางของเค้าร่างตามระยะขอบของมุมมองภายใน ขอบคุณ
Scott Biggs

5

ทำไมไม่เพียงแค่สร้างมุมมองสูง 1dp ด้วยสีพื้นหลัง? จากนั้นสามารถวางได้อย่างง่ายดายตามที่คุณต้องการ


4

เพียงเพิ่มโซลูชันของฉันในรายการ ..

ฉันต้องการเส้นขอบด้านล่างกึ่งโปร่งใสที่ขยายผ่านรูปร่างดั้งเดิม (ดังนั้นเส้นกึ่งโปร่งใสนั้นอยู่ด้านนอกสี่เหลี่ยมผืนผ้าพาเรนต์)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item>
    <shape android:shape="rectangle" >      
      <solid android:color="#33000000" /> <!-- Border colour -->
    </shape>
  </item>
  <item  android:bottom="2dp" >
    <shape android:shape="rectangle" >     
      <solid android:color="#164586" />
    </shape>
  </item>
</layer-list>

ซึ่งให้ฉัน

ป้อนคำอธิบายรูปภาพที่นี่


4

หากต้องการเปลี่ยนสิ่งนี้:

<TextView
    android:text="My text"
    android:background="@drawable/top_bottom_border"/>

ฉันชอบวิธีนี้ใน "drawable / top_bottom_border.xml":

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:angle="90"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
</layer-list>

สิ่งนี้ทำให้เส้นขอบไม่ใช่รูปสี่เหลี่ยมผืนผ้าที่จะปรากฏขึ้นหากพื้นหลังของคุณมีสี


3

ก่อนอื่นให้สร้างไฟล์ xml พร้อมเนื้อหาที่แสดงด้านล่างและตั้งชื่อเป็น border.xml และวางไว้ในโฟลเดอร์เค้าโครงภายในไดเรกทอรี res

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="1dp" android:color="#0000" />
    <padding android:left="0dp" android:top="1dp" android:right="0dp"
        android:bottom="1dp" />
</shape>

หลังจากนั้นภายในรหัสใช้

TextView tv = (TextView)findElementById(R.id.yourTextView);
tv.setBackgroundResource(R.layout.border);

สิ่งนี้จะทำให้เส้นสีดำอยู่ด้านบนและด้านล่างของ TextView


ใช่มันใช้งานได้ฉันได้ตรวจสอบแล้ว ปุ่ม button = (ปุ่ม) findViewById (R.id.button); button.setBackgroundResource (R.layout.border);
Nikhil Dinesh

ฉันใช้สีดำในไฟล์ xml ด้านบนสีพื้นหลังของคุณอาจเป็นสีดำลองใช้สีอื่น มันจะทำงานได้อย่างแน่นอน <? xml version = "1.0" encoding = "UTF-8"?> <รูปร่าง xmlns: android = " schemas.android.com/apk/res/android "> <solid android: color = "# 474848 "/> <stroke android: width =" 1dp "android: color =" # ffff00 "/> <padding android: left =" 1dp "android: top =" 1dp "android: right =" 1dp "android: bottom =" 1dp "/> </shape>
Nikhil Dinesh

1
ไม่ได้ผลสำหรับฉัน เส้นขอบถูกวาดที่กึ่งกลางของมุมมองข้อความ - แนวนอน
AlikElzin-kilaka

3

เขียนรหัสด้านล่าง

<View
    android:layout_width="wrap_content"
    android:layout_height="2dip"
    android:layout_below="@+id/topics_text"
    android:layout_marginTop="7dp"
    android:layout_margin="10dp"
    android:background="#ffffff" />

2

นี่คือวิธีที่จะทำให้สำเร็จ

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <stroke
                    android:width="1dp"
                    android:color="@color/grey_coaching_text" />
            </shape>
        </item>

        <item
            android:bottom="1dp"
            android:top="1dp">
            <shape android:shape="rectangle">
                <solid android:color="@color/white" />
            </shape>
        </item>
    </layer-list>

รายการแรกสำหรับโรคหลอดเลือดสมองและรายการที่สองสำหรับพื้นหลังที่เป็นของแข็ง ซ่อนเส้นขอบด้านซ้ายและขวา


2

วิธีที่ง่ายที่สุดในการเพิ่มเส้นขอบเพื่อแทรกเส้นขอบโดยใช้สิ่งInsetDrawableต่อไปนี้จะแสดงเส้นขอบด้านบนเท่านั้น:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-2dp"
    android:insetLeft="-2dp"
    android:insetRight="-2dp">
    <shape android:shape="rectangle">

        <solid android:color="@color/light_gray" />
        <stroke
            android:width=".5dp"
            android:color="@color/dark_gray" />
    </shape>
</inset>

2

เพิ่มไฟล์เพื่อ res / drawable

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:left="-2dp" android:right="-2dp">
            <shape android:shape="rectangle">
                <stroke
                    android:width="1dp"
                    android:color="#000000" />
            </shape>
        </item>
    </layer-list>

เพิ่มลิงค์ในไฟล์นี้ไปยังคุณสมบัติพื้นหลัง


1

ลองตัดภาพด้วยเส้นขอบหน้าต่างและตั้งค่าพื้นหลังเป็นสีเส้นขอบที่คุณต้องการรอบข้อความ จากนั้นตั้งค่าการขยายบนมุมมองข้อความให้เป็นความหนาที่คุณต้องการสำหรับเส้นขอบของคุณ


1

คุณยังสามารถใช้ 9-path เพื่อทำงานของคุณ สร้างมันขึ้นมาเพื่อให้พิกเซลที่มีสีไม่สูงเท่ากัน


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

<solid android:color="@color/light_grey1" />
<stroke
    android:width="1dip"
    android:color="@color/light_grey1" />

<corners
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="5dp" />

    </shape>

1

เพียงเพิ่ม Views ที่ด้านบนและด้านล่างของ View

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/your_color"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintStart_toStartOf="@+id/textView" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:gravity="center"
        android:text="Testing"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/your_color"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintStart_toStartOf="@+id/textView"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

</android.support.constraint.ConstraintLayout>

0
// Just simply add border around the image view or view

<ImageView
                android:id="@+id/imageView2"
                android:layout_width="90dp"
                android:layout_height="70dp"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:layout_toLeftOf="@+id/imageView1"
                android:background="@android:color/white"
                android:padding="5dip" />

// After that dynamically put color into your view or image view object

objView.setBackgroundColor(Color.GREEN);

//VinodJ/Abhishek

-1
<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#72cdf4"
    android:text=" aa" />

เพียงเพิ่ม TextView นี้ใต้ข้อความที่คุณต้องการเพิ่มเส้นขอบ


-1

เพียงแค่การบังคับใช้@phreakhead ของและuser1051892 ของคำตอบถ้าลบต้องมีค่ามากกว่า<item android:bottom|android:left|android:right|android:top> <stroke android:width>หากไม่ได้ภาพวาดของรายการจะถูกนำไปผสมกับการวาดภาพแบบสโตรกและคุณอาจคิดว่าค่าเหล่านี้ไม่ทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.