2013-02-27 113 views
63

मेरे पास एक बड़ा लेआउट है, और इसके अंदर एक छोटा लेआउट है।मैं एंड्रॉइड लीनियरआउट के आसपास सीमा कैसे बना सकता हूं?

मैं छोटे लेआउट के चारों ओर एक रेखा सीमा कैसे बना सकता हूं?

+0

क्या आपने http://stackoverflow.com/questions/3496269/how-to-put-a-border-around-an-android-textview की कोशिश की है? – sandrstar

उत्तर

147

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

एक फाइल अपने drawable फ़ोल्डर में 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"> 

कि चाल करना चाहिए।

यह भी देखें:

+25

आयत में रंग भर जाएगा। आपको केवल सीमा खींचने के लिए का उपयोग करने की आवश्यकता है। – NightFury

+1

वास्तव में यह चाल है, मुझे यह पता लगाने में थोड़ी देर लग गई कि मेरा आकार क्यों काम नहीं करता है। पैडिंग के साथ यह ठीक काम करता है। – John

+3

दोनों '' और ' 'पूरे आयत को भरें? क्या यह मेरे कोड में एक बग है? – mr5

17
के रूप में नीचे drawable फ़ोल्डर में

बनाएं एक्सएमएल बुलाया 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"> 
     <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" 
8

इस प्रयास करें:

उदाहरण के लिए, रेस निर्दिष्ट कर सकते हैं/drawable/my_custom_background.xml के रूप में:

(अपने drawable फ़ोल्डर में इस लेआउट बनाने) 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> 
9

Crea ते drawable फ़ोल्डर में एक एक 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" /> 

अब अपने छोटे लेआउट पृष्ठभूमि

एंड्रॉयड को यह एक्सएमएल फोन: पृष्ठभूमि = "@ drawable/yourxml"

+0

एलिमेंट स्ट्रोक की अनुमति नहीं है। – hdavidzhu

3

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

पहले, drawable फ़ोल्डर में इस सीमा drawable बनाएँ, 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 दृश्य में, सीमा जोड़ें।इस

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

की तरह पृष्ठभूमि के रूप में एक्सएमएल आप यह कर सकते pragmatically भी

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

तब के रूप में लेआउट की पृष्ठभूमि सेट: मैं जोड़ देंगे

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

एंड्रॉयड डॉक्स दूसरे से जोड़ जवाब।

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

यह सीमा निर्धारित करने के लिए उन के बीच में आकार Drawable की सभी विशेषताओं और 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> 

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