मैं Android LinearLayout के चारों ओर एक बॉर्डर कैसे बना सकता हूं?


113

मेरे पास एक बड़ा लेआउट है, और इसके अंदर एक छोटा लेआउट है।

मैं छोटे लेआउट के चारों ओर एक लाइन बॉर्डर कैसे बनाऊं?


क्या आपने stackoverflow.com/questions/3496269/… की कोशिश की है ?
सैंडरस्टार

जवाबों:


241

ज़रूर। आप अपनी इच्छानुसार किसी भी लेआउट में एक सीमा जोड़ सकते हैं। मूल रूप से, आपको एक कस्टम ड्रॉबल बनाने और पृष्ठभूमि के रूप में इसे अपने लेआउट में जोड़ने की आवश्यकता है। उदाहरण:

customborder.xmlअपने ड्रा करने योग्य फ़ोल्डर में एक फ़ाइल बनाएं :

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

अब इसे अपने छोटे लेआउट की पृष्ठभूमि के रूप में लागू करें:

<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/customborder">

यह ट्रिक काम आना चाहिए।

और देखें:


29
<ठोस> आयत में रंग भरेगा। यू को केवल सीमा खींचने के बजाय <स्ट्रोक> का उपयोग करने की आवश्यकता है।
रात्रि विश्राम

1
यहाँ चाल वास्तव में <गद्दी> है, मुझे यह पता लगाने में थोड़ा समय लगा कि मेरा आकार क्यों नहीं हुआ। पैडिंग के साथ यह ठीक काम करता है।
जॉन

3
दोनों <solid/>और <stroke/>पूरी आयत भरें? क्या यह मेरे कोड में एक बग है?
mr5

13
Add <string android: width = "1dip" android: color = "# CCCCCC" />, इसके काम ठीक हैं।
पियरी सेप

1
पियरी की टिप्पणी इस उत्तर को सही बनाती है। अन्यथा आप केवल पूर्ण भरी हुई पृष्ठभूमि प्राप्त कर सकते हैं।
21

25

नीचे दिए गए ड्राफ़्ट फोल्डर में XML को बॉर्डर कहा जाता है।

<?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="#FF0000" /> 
    </shape>
  </item>   
    <item android:left="5dp" android:right="5dp"  android:top="5dp" >  
     <shape android:shape="rectangle"> 
      <solid android:color="#000000" />
    </shape>
   </item>    
 </layer-list>

फिर इसे रैखिक लेआउट में इस तरह जोड़ें:

     android:background="@drawable/border"

11

इसे इस्तेमाल करे:

उदाहरण के लिए, हम res / drawable / my_custom_background.xml को इस प्रकार परिभाषित करते हैं:

(अपने लेआउट फ़ोल्डर में इस लेआउट बनाएँ) layout_border.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="2dp" android:height="2dp"
                android:color="#FF0000" />
            <solid android:color="#000000" />
            <padding android:left="1dp" android:top="1dp" android:right="1dp"
                android:bottom="1dp" />

            <corners android:radius="1dp" android:bottomRightRadius="5dp"
                android:bottomLeftRadius="0dp" android:topLeftRadius="5dp"
                android:topRightRadius="0dp" />
        </shape>
    </item>

</layer-list>

main.xml

<LinearLayout 
    android:layout_gravity="center"
    android:layout_width="200dp" 
    android:layout_height="200dp"   
    android:background="@drawable/layout_border" />
</LinearLayout>

11

ड्रा करने योग्य फ़ोल्डर में एक xml फ़ाइल बनाएँ

<stroke
    android:width="2dp"
    android:color="#B40404" />

<padding
    android:bottom="5dp"
    android:left="5dp"
    android:right="5dp"
    android:top="5dp" />

<corners android:radius="4dp" />

अब इस xml को अपने छोटे लेआउट बैकग्राउंड पर कॉल करें

एंड्रॉयड: पृष्ठभूमि = "@ drawable / yourxml"


यहां तत्व स्ट्रोक की अनुमति नहीं है।
hdavidzhu

3

यह समाधान केवल सीमा को जोड़ देगा, रैखिकलेयूट का शरीर पारदर्शी होगा।

सबसे पहले, इस सीमा को ड्रा करने योग्य फ़ोल्डर में बनाएं, border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android= "http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke android:width="2dp" android:color="#ec0606"/>
    <corners android:radius="10dp"/>
</shape>

फिर, अपने LinearLayout दृश्य में, इस तरह की पृष्ठभूमि के रूप में border.xml जोड़ें

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/border">

3

आप इसे व्यावहारिक रूप से भी कर सकते हैं

  GradientDrawable gradientDrawable=new GradientDrawable();
   gradientDrawable.setStroke(4,getResources().getColor(R.color.line_Input));

फिर लेआउट की पृष्ठभूमि इस प्रकार सेट करें:

LinearLayout layout = (LinearLayout ) findViewById(R.id.ayout); layout .setBackground(gradientDrawable);

3

मैं अन्य उत्तरों में Android डॉक्स लिंक जोड़ूंगा।

https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

यह शेप ड्रॉएबल और strokeउनमें से बॉर्डर सेट करने की सभी विशेषताओं का वर्णन करता है ।

उदाहरण:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <stroke android:width="1dp" android:color="#F00"/>
  <solid android:color="#0000"/>
</shape>

पारदर्शी पृष्ठभूमि के साथ लाल सीमा।


ठोस भाग केवल सीमा पर टिंट स्थापित करने की अनुमति देता है। +1
aksh1618

0

एक आकर्षित करने योग्य संसाधन नहीं बनाना चाहते हैं?

  <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/black"
    android:minHeight="128dp">

    <FrameLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="1dp"
      android:background="@android:color/white">

      <TextView ... />
    </FrameLayout>
  </FrameLayout>

0

अपने रेस / ड्रॉबल में इसे आज़माएं

    <?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <shape
    android:shape="rectangle">
    <padding android:left="15dp"
        android:right="15dp"
        android:top="15dp"
        android:bottom="15dp"/>
    <stroke android:width="10dp"
        android:color="@color/colorPrimary"/>
  </shape>
</item><item android:left="-5dp"
        android:right="-5dp"
        android:top="-5dp"
        android:bottom="-5dp">
  <shape android:shape="rectangle">
    <solid android:color="@color/background" />
  </shape></item></layer-list>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.