मैं कैसे xml का उपयोग करके एक रंग की दराज के गोल कोने के त्रिज्या को सेट कर सकता हूं?


108

एंड्रॉइड वेबसाइट पर, रंग ड्रॉबल्स के बारे में एक अनुभाग है । इन ड्राअल्स को xml में परिभाषित करना इस प्रकार है:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

जावा एपि में, गोल गोल कोनों को परिभाषित करने के लिए उनके पास निम्न विधि है:

setCornerRadius(float radius)

क्या xml में गोल कोनों को सेट करने का एक तरीका है?


कोड से कोनों को देखने के लिए (ग्रेडिएबल ड्राबल्स): stackoverflow.com/questions/8709595/…
samis

जवाबों:


319

<shape>XML के लिए गोल कोनों के साथ एक बनाने योग्य बनाने के लिए टैग का उपयोग करें । (आप आकार टैग के साथ अन्य सामान कर सकते हैं जैसे कि एक रंग ढाल को भी परिभाषित करें)।

यहाँ एक XML फ़ाइल की एक प्रतिलिपि है जिसका उपयोग मैं अपने एक ऐप में एक सफेद पृष्ठभूमि, काली सीमा और गोल कोनों के साथ एक आकर्षक बनाने के लिए कर रहा हूँ:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    
             
    <stroke android:width="3dp"
            android:color="#ff000000" />

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

1
इस फ़ाइल को कहाँ सहेजना है और इसे अपने जावा कोड में कैसे प्राप्त करना है? धन्यवाद
श्याम

7
इसे ड्रा करने योग्य निर्देशिका में एक xml फ़ाइल के रूप में सहेजें, फिर इसका उपयोग करें जैसे कि आप इसके संसाधन नाम (R.drawable.your_xml_name) का उपयोग करके किसी भी ड्रा करने योग्य (आइकन या संसाधन फ़ाइल) का उपयोग करेंगे
Guillaume

30
इस विशेष मामले में सभी त्रिज्या समान हैं, इसलिए आप Android का उपयोग कर सकते थे: त्रिज्या = "7dp"
विल क्रु

2
इसके अलावा, एंड्रॉइड स्टूडियो में लेआउट रेंडरर इसे प्रस्तुत करने में सक्षम नहीं होगा यदि आप त्रिज्या को समान रूप से परिभाषित करते हैं (यहां तक ​​कि समान मूल्यों के साथ) और आपको एक चेतावनी देगा "Pat.isConvex समर्थित नहीं है"। बस <कोनों का उपयोग करें: त्रिज्या = "7dp" />
फ्रांसेस्को एम्ब्रोसिनी

@ श्याम आप इसे "पृष्ठभूमि" के रूप में सेट कर सकते हैं। यदि आप इसका उपयोग TextView पर करते हैं, तो आपको शुरुआत और अंत के लिए पैडिंग जोड़ना याद रखना होगा ताकि पाठ गोल किनारे से भीड़ न जाए
RowanPD

19

mbaird का जवाब ठीक काम करता है। बस ध्यान रखें कि एंड्रॉइड (2.1 कम से कम) में एक बग लगता है, कि यदि आप किसी भी कोने के त्रिज्या को 0 पर सेट करते हैं, तो यह सभी कोनों को 0 (कम से कम "डीपी" इकाइयों के मामले में मजबूर करता है; मैंने नहीं किया था; 'किसी भी अन्य इकाइयों के साथ यह कोशिश नहीं)।

मुझे एक ऐसे आकार की आवश्यकता थी जहां शीर्ष कोने गोल हों और नीचे के कोने चौकोर हों। मैंने इसे प्राप्त किया कोनों को सेट करके जिसे मैं 0: 0.1dp से थोड़ा बड़ा मान वर्ग करना चाहता था। यह अभी भी वर्ग कोनों के रूप में प्रस्तुत करता है, लेकिन यह अन्य कोनों को 0 त्रिज्या के लिए मजबूर नहीं करता है।


क्या आपने सिर्फ 0.1 डीपी लिखा है? क्या यह काम करता है, मुझे ऊपरी गोल कोनों और निचले वर्ग वाले भी चाहिए, एक ही मुद्दा जैसा कि आपने अभी 1 dp का उपयोग किया है, वर्ग कोनों पर और 10dp गोल वाले लोगों पर, यू सही है यह अभी भी ध्यान देने योग्य है, लेकिन मुझे 90% देता है क्या मैं चाहते हैं, प्रलेखन सेटिंग के अनुसार, आसपास के कोनों पर 0 काम करना चाहिए था।
कोडस्क्रबर

वास्तव में यह बग नहीं है, यह प्रलेखन में है: developer.android.com/guide/topics/resources/…
Tsuharesu

1

कोड के नीचे प्रयास करें

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.