2011-12-06 10 views
17

मेरे एंड्रॉइड एक्सएमएल लेआउट में मैं पृष्ठभूमि के रूप में borderframe.xml का उपयोग कर सीमा लागू कर रहा हूं। ,क्यों मैं विशिष्ट कोने के लिए गोल सीमा बनाने में सक्षम नहीं हूं?

<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke 
     android:width="1dip" 
     android:color="#ffffff"/> 
    <solid 
     android:color="#95865F"/> 
    <corners 
     android:radius="10px"/> 

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

अब जबकि वहाँ एक android है:

borderframe.xml फ़ाइल नीचे की तरह लग रहा है त्रिज्या = "10px" तो यह काम करता है है, लेकिन जब मैं विशिष्ट कोने केवल करने के लिए गोल आकार देने जा रहा हूँ तो यह काम नहीं करता है। वहाँ लॉग बिल्ली में कोई किसी भी erro संदेश है, लेकिन मैं की तरह ग्रहण में त्रुटि मिली:

The graphics preview in the layout editor may not be accurate: 
* Different corner sizes are not supported in Path.addRoundRect. 

यहां तक ​​कि अगर वहाँ उस xml फ़ाइल में कोई पैडिंग है तो भी मैं किसी भी सीमा को देखने में सक्षम नहीं हूँ।

अब, मुझे इसके लिए क्या करना चाहिए? और यदि मैं केवल शीर्ष लेफ्टकॉर्नर और नीचे लेफ्टकॉर्नर के लिए गोलाकार सीमा बनाना चाहता हूं तो इसका क्या प्रभाव है। ? धन्यवाद।

उत्तर

10

आप, कि करना होगा यह सोचते हैं आप केवल एक गोल शीर्ष बाएं कोने हैं:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <corners 
     android:radius="20sp" 
     android:topRightRadius="0dp" 
     android:bottomRightRadius="0dp" 
     android:bottomLeftRadius="0dp" /> 
    <gradient 
     android:startColor="@color/logo_blue" 
     android:endColor="@color/blue" 
     android:angle="0"/> 
</shape> 

स्पष्टीकरण: हर कोने (शुरू) एक कोने की त्रिज्या अधिक से अधिक 1 की तुलना में और प्रदान किया जाना चाहिए, या कोई कोने गोलाकार नहीं हैं। यदि आप विशिष्ट कोनों को गोलाकार नहीं करना चाहते हैं, तो एक कार्य-आसपास android:radius का उपयोग 1 से अधिक डिफ़ॉल्ट कोने त्रिज्या सेट करने के लिए किया जाता है, लेकिन उसके बाद प्रत्येक कोने को उन मूल्यों के साथ ओवरराइड करें जो आप वास्तव में चाहते हैं, शून्य ("0dp") प्रदान करते हैं आप गोलाकार कोनों नहीं चाहते हैं।

<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke 
     android:width="1dip" 
     android:color="#ffffff"/> 
    <solid 
     android:color="#95865F"/> 
    <corners 
     android:radius="10px" 
     android:topRightRadius="0dp" 
     android:bottomRightRadius="0dp" /> 

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

अद्यतन

The Shape Drawable Resource Android Documentation से::

एंड्रॉयड: त्रिज्या आयाम [source]

एक परिणाम के रूप में, आप के रूप में अपने drawable को परिभाषित करने की जरूरत है। सभी कोनों के लिए त्रिज्या, आयाम मान या आयाम संसाधन के रूप में। यह गुणों के बाद द्वारा प्रत्येक कोने के लिए ओवरराइड किया गया है।

ओवरराइड आपकी समस्या के लिए कीवर्ड ...

+0

ठीक है धन्यवाद। मुझे कोशिश करने दो। –

+1

ठीक है धन्यवाद। लेकिन यदि कोई पैडिंग आकार में परिभाषित नहीं है तो मैं सीमा को देखने में सक्षम नहीं हूं। । क्यूं कर ? –

+0

यदि उस आकार में कोई पैडिंग नहीं है तो मैं कोने को देखने में सक्षम क्यों नहीं हूं ?? –

6

मैं एसडीके उपकरण 19, मंच उपकरण 11 का उपयोग कर रहा है और एंड्रॉयड 4.0.3 में एप्लिकेशन चल रहा है। मेरे लिए निम्न XML कार्यों का उपयोग करना:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#dd000000"/> 
    <padding 
     android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners 
     android:bottomLeftRadius="25dp" 
     android:bottomRightRadius="25dp" 
     android:topLeftRadius="0dp" 
     android:topRightRadius="0dp" /> 
</shape> 

ग्रहण चेतावनी पूर्वावलोकन दिखाने में सक्षम नहीं है। हेट ऐप में यह सही दिखाता है।

+0

आह। यह अभी भी एंड्रॉइड स्टूडियो के साथ होता है। –

16

मुझे भी एक ही समस्या का सामना करना पड़ रहा है। लेकिन इसके लिए मैं परत सूची का उपयोग करता हूं। मैं यहां अपना उत्तर पोस्ट करता हूं जो आपकी मदद कर सकता है।
की जांच करें आउटपुट स्क्रीन image 1

<?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="#c1c1c1" /> 
      <solid android:color="#c1c1c1" /> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 

    <item android:right="20dp" 
     > 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#c1c1c1" /> 
      <solid android:color="#c1c1c1" /> 
     </shape> 
    </item> 

</layer-list> 
+0

यह एकमात्र ऐसा है जो मेरे लिए काम करता है। धन्यवाद। – black

0

मैं मंचों में से एक पर समाधान मिल गया। मैंने प्रत्येक कोने & को ड्रॉबल में एक्सएमएल में जोड़कर इसे हल करके हल किया।मैंने केवल समझने के लिए नीचे दिए गए कोड पर टिप्पणी की है।

एक्सएमएल Code-

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 
     <solid android:color="#fd2149" /> 
     <stroke android:width="1dip" android:color="#ffd102"/> 
     <!-- <corners 
      android:bottomLeftRadius="8dp" 
      android:bottomRightRadius="8dp" 
      android:topLeftRadius="8dp" 
      android:topRightRadius="8dp" /> 
     --> 
     <corners android:radius="8dp" /> 
    </shape> 

--- Edited- ऊपर कोड drawable फ़ोल्डर में मेरी back.xml है और यदि आवश्यक हो तो आप एक ही back.xml में पैडिंग जोड़ सकते हैं। जो लोग नई डेवलपर्स के लिए, back.xml के रूप में इस प्रकार है

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textSize="20sp" 
    android:scrollbars="vertical" 
    android:background="@drawable/back"> 

आशा इस मदद करता है अपने लेआउट फ़ाइल से संदर्भित है।

संबंधित मुद्दे