क्या एंड्रॉइड व्यू के ऊपर और नीचे की सीमा को जोड़ने का एक आसान तरीका है?


407

मेरे पास एक TextView है और मैं इसकी शीर्ष और निचली सीमाओं के साथ एक काली सीमा जोड़ना चाहूंगा। मैंने पाठ दृश्य में जोड़ने android:drawableTopऔर android:drawableBottomकरने की कोशिश की , लेकिन इससे पूरा दृश्य काला हो गया।

<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" />

क्या एंड्रॉइड में एक व्यू (विशेष रूप से, एक टेक्स्ट व्यू) में आसानी से ऊपर और नीचे की सीमा को जोड़ने का एक तरीका है?


2
यह आश्चर्यजनक है कि किसी ने भी विभक्त का उल्लेख नहीं किया है ! यह एंड्रॉइड द्वारा बनाई गई चीज है, जिसे प्राप्त करने के लिए, अच्छी तरह से, ऊर्ध्वाधर डिवाइडर। आसान नहीं है और आप Android स्टूडियो में "डिजाइन" WYSIWYG पैनल में सब कुछ करते हैं।
फटी

ध्यान दें dividerVertical एपीआई 11 में लागू किया गया था
JPM

1
शायद आप यह दिखा सकते हैं कि डिवाइडरवैलिकल का उपयोग कैसे करें?
androidguy

जवाबों:


430

Android 2.2 में आप निम्न कार्य कर सकते हैं।

एक xml drawable जैसे /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>

इस के लिए नीचे की ओर यह है कि आपको एक अपारदर्शी पृष्ठभूमि रंग निर्दिष्ट करना होगा, क्योंकि पारदर्शिता काम नहीं करेगी। (कम से कम मुझे लगा कि उन्होंने किया है, लेकिन मुझसे गलती हुई)। उपरोक्त उदाहरण में आप देख सकते हैं कि पहले आकार # FFFdddddd के ठोस रंग को 2 आकृतियों के स्ट्रोक रंग में कॉपी किया गया है।


11
इस समाधान को भी देखें, जो
TextViews के

26
android:color="@null"अपारदर्शी पृष्ठभूमि की समस्या से बचने के लिए उपयोग करने का प्रयास करें ।
मैट ब्रायनकन

@emmby: टैबलेट पर इस कोड का परीक्षण करते समय, स्क्रीन पर रेंडर करने में समय लगता है, जब मैं स्क्रॉल करता हूं तो 1 सेकंड की सीमाएं प्रदर्शित होती हैं
चेतन

5
Android: color = "@ null" ट्रिक ने पारदर्शिता रखने के लिए मेरे लिए यह ट्रिक नहीं की और बस एक तरफ दृश्य में सीमा प्रदर्शित की। नीचे दिए गए user1051892 के जवाब ने काम किया!
रिक पास्टर

8
इस समाधान ने बाईं और दाईं ओर एक सीमा बनाई - हालांकि एक पतली।
एलिकएल्ज़िन-किलाका

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
इसने मेरे लिए बहुत अच्छा काम किया, कुछ मोड़ के साथ लाइन को थोड़ा पतला करने के लिए।
जेफ

1
बहुत अच्छी चाल है, हालांकि यह अच्छा हो सकता है अगर हमें कंप्यूटर को चालित नहीं करना है ताकि चीजों को पूरा किया जा सके।
युकिओ फुकुजावा

अच्छी तरह से किया! आपको जो देखना चाहिए वह आइटम का लेफ्ट, टॉप, राइट, बॉटम - (स्ट्रोक की चौड़ाई) dp है
asakura89

कोई बॉर्डर नहीं दिखाया - बस मेरे विचार से सामग्री छोटी दिखती है :(
AlikElzin-kilaka

1
अच्छी तरह से किया, पारदर्शी पृष्ठभूमि के साथ काम किया। 2.2 और 4.4.2 में परीक्षण किया गया। सभी को बीच में कवर करना चाहिए :)
HumaN

97

विकल्प 1: शेप ड्रॉएबल

यह सबसे आसान विकल्प है यदि आप एक लेआउट या दृश्य के चारों ओर एक सीमा चाहते हैं जिसमें आप पृष्ठभूमि सेट कर सकते हैं। drawableफ़ोल्डर में एक XML फ़ाइल बनाएँ जो कुछ इस तरह दिखाई दे:

<?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। उस स्थिति में मैं Shapeड्रा करने योग्य की सिफारिश करूंगा ।

विकल्प 3: 9-पैच

एक अंतिम विकल्प इस तरह से 9-पैच ड्रॉबल का उपयोग करना है:

आप इसे किसी भी दृश्य पर उपयोग कर सकते हैं जहाँ आप सेट कर सकते हैं android:background="@drawable/..."। और हाँ इसे 6x6 करने की आवश्यकता है - मैंने 5x5 की कोशिश की और यह काम नहीं किया।

इस पद्धति का नुकसान यह है कि आप रंगों को बहुत आसानी से नहीं बदल सकते हैं, लेकिन अगर आप फैंसी बॉर्डर्स चाहते हैं (जैसे कि इस सवाल में जैसा कि ऊपर और नीचे एक बॉर्डर है), तो आप उन्हें Shapeड्रॉ करने योग्य नहीं कर सकते हैं , जो बहुत शक्तिशाली नहीं है।

विकल्प 4: अतिरिक्त विचार

मैं वास्तव में इस सरल विकल्प का उल्लेख करना भूल गया यदि आप केवल अपने दृष्टिकोण से ऊपर और नीचे की सीमा चाहते हैं। आप अपने विचार को एक लंबवत में डाल सकते हैं LinearLayout(यदि यह पहले से नहीं है) और फिर Viewइस तरह से ऊपर और नीचे खाली एस जोड़ें :

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

4
9 पैच और आकार ड्राअबल ठीक है, लेकिन मैं इस तरह की समस्या को हल करने के लिए विचार या साक्षात्कार जोड़ने के खिलाफ सलाह दूंगा। इसका कारण यह है कि लेआउट लेआउट और एनीमेशन को बेहतर बनाने के लिए आपको अपने लेआउट से ऐसे कई <तत्व> निकालने चाहिए। मैं इनको तुरंत बाहर निकाल दूंगा और विकल्प 1 या 2 के समान कुछ लागू करूंगा
एमिल

2
@Emile यह सच है, लेकिन यदि आप एक कस्टम सूची दृश्य का उपयोग कर रहे हैं जो डिवाइडर का समर्थन नहीं करता है तो एक साधारण दृश्य ठीक है। प्रदर्शन प्रभाव शून्य के बगल में है, खासकर यदि आप अपने लेआउट की गहराई को कम रखना सुनिश्चित करते हैं। यह डिवाइसेस में ListView डिवाइडर के साथ बग्स को भी परिधि में रखता है (मैंने कुछ डिवाइसों को देखा है जो इस संपत्ति की उपेक्षा करते हैं)।
टॉम

आप सूचियों के साथ कुशल व्यूहोल्डर पैटर्न का भी उपयोग कर सकते हैं ताकि यह सुनिश्चित किया जा सके कि आप कॉल की संख्या को कम कर सकें।
एमिल

IOS में आपके पास ऐसा करने का केवल एक ही तरीका है। Android पर आपको कम से कम चार का परीक्षण करना चाहिए, मेरे मामले में विकल्प 4 जाने का रास्ता था। कभी-कभी ड्रॉ बैकग्राउंड हैंग के रूप में रेंडर करने के लिए, इसके बारे में जागरूक रहें।
रत्ता टाटा

1
एंड्रॉइड के पास ऐसी चीजों के लिए सबसे आसान समाधान क्यों नहीं था? अन्य भाषा में, जैसे HTML, CSS, या कुछ JavaFX, WPF ......
Asif Mushtaq

95

1dpनीचे केवल एक सफेद बॉर्डर जोड़ने के लिए और एक पारदर्शी पृष्ठभूमि होने के लिए आप निम्नलिखित का उपयोग कर सकते हैं जो कि यहां अधिकांश उत्तरों की तुलना में सरल है।

के लिए TextViewया अन्य दृश्य जोड़ने:

android:background="@drawable/borderbottom"

और drawableनिर्देशिका में निम्नलिखित एक्सएमएल जोड़ें, कहा जाता है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तत्व की आवश्यकता नहीं हो सकता है। यह आपके डिजाइन पर निर्भर करेगा (धन्यवाद वी। कल्हेज़नीउ)।

मूल रूप से, यह एक्सएमएल आयत आकार का उपयोग करके एक सीमा बनाएगा, लेकिन फिर आकार के लिए रेंडर क्षेत्र से परे शीर्ष, दाएं और बाएं पक्षों को धक्का देता है। यह सिर्फ नीचे की सीमा को दिखाई देता है।


8
यह सबसे अच्छा समाधान है, क्योंकि यह दूसरों की तरह ओवरड्रॉव नहीं बनाता है
ग्रेग

क्या कोई कारण है कि नकारात्मक स्थिति स्ट्रोक ( -2dpबनाम 1dp) से दोगुनी बड़ी है ? तब लगता है जब वे राशि ( -1और 1) में समान हों ।
डेनिस नियाज़ेव

@DenisKniazhev: जब -2dpपरिणाम का उपयोग करना हमेशा साफ था। मुझे लगता है कि परीक्षण का मामला था जहां परिणाम साफ नहीं था। मुझे याद नहीं है कि यह कम या उच्च घनत्व स्क्रीन या एंड्रॉइड का पुराना संस्करण था (2.x शायद)।
टाइगर

दिलचस्प। क्या आप जानते हैं कि क्या यह एक सामान्य मामला है, उदाहरण के लिए अगर मैं 4dpस्ट्रोक चौड़ाई के लिए उपयोग करूं तो क्या मुझे -8dpस्थिति के लिए उपयोग करना चाहिए ?
डेनिस नियाज़ेव

1
@DenisKniazhev: (स्मृति से) यह एक फ्लोटिंग पॉइंट गणना की तरह दिखता था जो कि बस थोड़ा बड़ा या छोटा था। इसका मतलब है -5dpकि सभी का एक मूल्य होगा जिसकी चौड़ाई मूल्य के साथ आवश्यक है 4pd। फ्लोट वैल्यू की अशुद्धि पर काबू पाने के लिए बस थोड़ा सा बड़ा होना जरूरी था।
टाइगर

36

वर्तमान में स्वीकृत उत्तर काम नहीं करता है। यह एंटी-अलियासिंग के परिणामस्वरूप दृश्य के बाईं और दाईं ओर पतली ऊर्ध्वाधर सीमाएं बनाता है।

यह संस्करण पूरी तरह से काम करता है। यह आपको स्वतंत्र रूप से सीमा की चौड़ाई निर्धारित करने की भी अनुमति देता है, और यदि आप चाहें तो बाईं ओर / दाईं ओर सीमाएं भी जोड़ सकते हैं। एकमात्र दोष यह है कि यह पारदर्शिता का समर्थन नहीं करता है।

/res/drawable/top_bottom_borders.xmlनीचे दिए गए कोड के साथ नामांकित एक 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>

मार्शमैलो के माध्यम से एंड्रॉइड किटकैट पर परीक्षण किया गया


कैसे पारदर्शी बनाने के लिए?
हितेश साहू

1
@HiteshSahu मुझे लगता है कि इसका नकारात्मक पक्ष यह है कि आपको लेआउट की पृष्ठभूमि का मिलान यहाँ के विजेट से करना होगा
chntgomez

35

इसलिए मैं कुछ अलग करना चाहता था: नीचे की तरफ एक सीमा, एक सूची दृश्य विभक्त का अनुकरण करने के लिए। मैंने पीट डेलपोर्ट के उत्तर को संशोधित किया और इसे प्राप्त किया:

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

वास्तव में 1 पिक्सेल विभक्त पाने के लिए dp के बजाय px का उपयोग करने पर ध्यान दें (कुछ फोन DPIs 1dp लाइन गायब कर देगा)।


2
प्रिय! का मूल्य क्या है "@color/background_trans_light"?
शजील अफजल

चीयर्स @ एफ्रीकेड, यह वास्तव में मेरे लिए काम करता है! कोई टॉप, लेफ्ट या राइट बॉर्डर नहीं। वास्तव में मुझे क्या चाहिए, धन्यवाद!
शान्होबन

2
कृपया आप यह बता सकते हैं कि जब आप -2dp डालते हैं तो यह क्यों गायब हो जाता है और जब आप -1dp डालते हैं तब भी यह दिखाई देता है? धन्यवाद!
फ्रांसिस्को रोमेरो

9

जैसा कि @Nic हबर्ड ने कहा, सीमा रेखा जोड़ने का एक बहुत आसान तरीका है।

<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

आप एक फ्रेम-आउट में दृश्य को भी लपेट सकते हैं, फिर फ़्रेम की पृष्ठभूमि का रंग सेट करें और जो आप चाहते हैं उसे पैडिंग करें; हालाँकि, टेक्स्टव्यू, डिफ़ॉल्ट रूप से एक 'पारदर्शी' पृष्ठभूमि है, इसलिए आपको टेक्स्टव्यू की पृष्ठभूमि का रंग भी बदलना होगा।


बहुत साधारण। आप इनर व्यू के मार्जिन द्वारा आउटलाइन के आकार और दिशा को नियंत्रित करते हैं। धन्यवाद।
स्कॉट बिग्स

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 फाइल बनाएं और इसे बॉर्डर नाम दें। xml और इसे रेज्ड डायरेक्टरी के अंदर लेआउट फोल्डर के अंदर रखें

<?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 के ऊपर और नीचे काली रेखा बनाएगा।


हाँ, यह काम करेगा, मैंने जाँच की है। बटन बटन = (बटन) findViewById (R.id.button); button.setBackgroundResource (R.layout.border);
निखिल दिनेश

मैंने उपरोक्त xml फ़ाइल में काले रंग का उपयोग किया है, आपकी पृष्ठभूमि का रंग काला हो सकता है, किसी अन्य रंग का उपयोग करके देखें। यह निश्चित रूप से काम करेगा <? Xml संस्करण = "1.0" एन्कोडिंग = "UTF-8"?> <आकार xmlns: android = " schemas.android.com/apk/res/android "> <ठोस Android: color = "# 47248" "/> <स्ट्रोक एंड्रॉइड: चौड़ाई =" 1dp "Android: color =" # ffff00 "/> <गद्दी Android: left =" 1dp "Android: top =" 1dp "Android: right =" 1dp "Android: bottom =" 1dp "/> </ size>
निखिल दिनेश

1
मेरे लिए काम नहीं किया। बॉर्डर लाइन को टेक्स्ट व्यू के बीच में - क्षैतिज रूप से चित्रित किया गया था।
एलिकएल्ज़िन-किलाका जूल

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-पथ का उपयोग भी कर सकते हैं। इसे बनाएं ताकि रंगीन पिक्सेल ऊंचाई में गुणा न करें बल्कि केवल पारदर्शी पिक्सेल हो।


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

बस ऊपर और नीचे के दृश्य जोड़ें 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" />

जिस टेक्स्ट को आप बॉर्डर जोड़ना चाहते हैं, उसके नीचे बस इस टेक्स्ट व्यू को जोड़ें


-1

बस @phreakhead ands लागू करने के लिए और user1051892 ´s जवाब, <item android:bottom|android:left|android:right|android:top>अगर नकारात्मक, से अधिक होना चाहिए <stroke android:width>। यदि नहीं, तो आइटम की पेंटिंग को स्ट्रोक की पेंटिंग के साथ मिलाया जाएगा और आप सोच सकते हैं कि ये मान काम नहीं कर रहे हैं।

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