2011-06-28 9 views
7

मैं अंदरूनी और बाहर के चौराहे वाले कोनों के साथ एक लेआउट सीमा बनाने का प्रयास कर रहा हूं। मैं एकत्रित की हैं मैं एक xml drawable दो आकृतियों से बना परिभाषा भी बनाना होगा: एक स्ट्रोक की चौड़ाई और कोने त्रिज्या के साथ एक और केवल एक स्ट्रोक की चौड़ाई के साथ एक और:किनारों के अंदर गोल के साथ स्क्वायर आकार की लेआउट सीमा

ड्रॉएबल/

round_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="4dp" android:color="#FF000000" /> 
    <padding android:left="7dp" android:top="7dp" 
      android:right="7dp" android:bottom="7dp" /> 
    <corners android:radius="4dp" /> 
    <solid android:color="#FFC0C0C0" /> 
</shape> 

square_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="2dp" android:color="#FF000000" /> 
    <solid android:color="#FFC0C0C0" /> 
</shape> 

इन कार्यों में से प्रत्येक स्वतंत्र रूप से एक सीमा के रूप में जब इतने तरह appliedby ही:

एंड्रॉयड: पृष्ठभूमि = "@ drawable/round_border" लेकिन जब वे एक या दोनों तो जैसे एक आइटम की सूची drawable जोड़े जाते हैं:

composite_border.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <layer-list> 
     <item android:drawable="@drawable/round_border"/> 
     <!-- <item android:drawable="@drawable/square_border"/> --> 
    </layer-list> 
</shape> 

और:

एंड्रॉइड: पृष्ठभूमि = "@ ड्रायबल/कंपोजिट_बॉर्डर"

लेआउट की पृष्ठभूमि सिर्फ एक काला सीमा के बजाय पूरी तरह से काला है - किसी को पता है कि इस कार्य के लिए परत सूची कैसे काम करें?

+0

धन्यवाद! – cV2

उत्तर

2

square_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="2dp" 
      android:color="#FF000000" 
    /> 
    <solid android:color="#FFC0C0C0" /> 
</shape> 

composite_border.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <layer-list> 
     <item android:drawable="@drawable/round_border"/> 
     <!-- <item android:drawable="@drawable/square_border"/> --> 
    </layer-list> 
</shape> 

टिप्पणियों और उद्धरण चिह्नों से सतर्क रहें! =]

+0

धन्यवाद - मैंने पोस्ट तय किया है। – jchristof

+0

धन्यवाद - अभी भी उत्तर की तलाश में है। – jchristof

4

Shape Drawable Doc से आप उस आकृति को देख सकते हैं परत-सूची के अंदर नहीं हो सकता है तो आप इस

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/square_border"/> 
    <item android:drawable="@drawable/round_border"/> 
</layer-list> 

टिप्पणी है कि मैं परत के अंदर अपने आइटम का क्रम बदल की तरह अपने composite_border.xml परिभाषित करना चाहिए -List के रूप में परत-सूची
Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top
के दस्तावेज में कहा गया है और आप चाहते हैं कि उसे बाहर

0

से चुकता किया जाना है यह पर्याप्त तरीके से कार्य करेंगे प्रयास करें:

solidपृष्ठभूमि रंग

strokeसीमा

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid 
     android:color="@color/white"/> 
    <stroke android:width="1dp" android:color="#ffaaaaaa" /> 
    <size 
     android:width="15dp" 
     android:height="15dp"/> 
</shape> 
2

एक xml फ़ाइल

round_background की तरह बनाने के है।एक्सएमएल

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <solid 
     android:color="#CCCC33"/> 
    <size 
     android:width="35dp" 
     android:height="35dp"/> 
</shape> 

लेआउट में पृष्ठभूमि के रूप में सेट इस साझा करने के लिए

<LinearLayout 
       android:id="@+id/layout_wellbeing" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:background="@drawable/rounded_corner_leuvan" 
       android:orientation="horizontal" > 
</LinearLayout> 
संबंधित मुद्दे