एंड्रॉइड यूआई में गोल आयत कैसे बनाएं?


141

मुझे Android UI में एक गोल आयत खींचना है। के लिए समान गोल आयत होने TextViewऔर EditTextसहायक भी होगा।


इस चर्चा पर एक नजर डालते हैं stackoverflow.com/questions/3646415/…
कार्तिक डोमडिया

कम से कम आपको तस्वीर डालनी चाहिए .. क्योंकि यदि कोई व्यक्ति उसी प्रश्न की तलाश कर रहा है तो उसे समझना आसान होगा।
हिमांशु मोरी

जवाबों:


215

अपने लेआउट में xml निम्न कार्य करें:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@android:color/holo_red_dark" />

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

</shape>

बदलकर android:radiusआप कोनों के "त्रिज्या" की मात्रा को बदल सकते हैं।

<solid> का उपयोग ड्रॉबल के रंग को परिभाषित करने के लिए किया जाता है।

आप को बदलने के लिए उपयोग कर सकते android:radiusके साथ android:bottomLeftRadius, android:bottomRightRadius, android:topLeftRadiusऔर android:topRightRadiusहर कोने के लिए त्रिज्या परिभाषित करने के लिए।


उन्होंने एक ग्रेडिएंट नहीं मांगा। पता नहीं क्यों यह स्वीकृत उत्तर है।
जेरी डेस्टरेम्प्स

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

125

मुझे लगता है, यह आपकी बिल्कुल जरूरत है।

यहाँ ड्रा करने योग्य (xml) फ़ाइल जो गोल आयत बनाती है। round_rect_shape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#ffffff" />

    <corners
        android:bottomLeftRadius="8dp"
        android:bottomRightRadius="8dp"
        android:topLeftRadius="8dp"
        android:topRightRadius="8dp" />

</shape>

यहाँ लेआउट फ़ाइल: my_layout.xml

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/round_rect_shape"
    android:orientation="vertical"
    android:padding="5dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Something text"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ff0000" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>
</LinearLayout>

-> उपरोक्त कोड में, रैखिकलेआउट की पृष्ठभूमि है (जो गोल आयताकार बनाने के लिए महत्वपूर्ण भूमिका है)। तो आप TextView, EditText ... जैसे किसी भी दृश्य को सभी के लिए राउंड आयत के रूप में बैकग्राउंड देखने के लिए जगह दे सकते हैं।


1
क्या इसमें अमूर्त करने का कोई तरीका है? मैं android:background="@drawable/round_rect_shape"अपनी शैलियों में उपयोग करने में सक्षम होना चाहता हूं। एक्सएमएल, लेकिन एक और संपत्ति सेट करके विभिन्न पृष्ठभूमि रंगों का उपयोग करना। क्या प्रत्येक रंग के लिए एक समान आकर्षित बनाने के अलावा कोई विकल्प नहीं है?
कर्ल डे

आप इस तरह से किसी भी आकार को गोल बना सकते हैं!
साबरी मेविस

22

इसमें monodroid, आप इसे गोल आयत के लिए कर सकते हैं, और फिर इसे मूल वर्ग के रूप में रखते हुए, editboxऔर अन्य लेआउट सुविधाएँ जोड़ी जा सकती हैं।

 class CustomeView : TextView
    {
       public CustomeView (Context context, IAttributeSet ) : base (context, attrs)  
        {  
        }
       public CustomeView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)  
        {  
        }
       protected override void OnDraw(Android.Graphics.Canvas canvas)
       {
           base.OnDraw(canvas);
           Paint p = new Paint();
           p.Color = Color.White;
           canvas.DrawColor(Color.DarkOrange);

           Rect rect = new Rect(0,0,3,3);

           RectF rectF = new RectF(rect);


           canvas.DrawRoundRect( rectF, 1,1, p);



       }  
    }
}

4
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:padding="10dp"
  android:shape="rectangle">
    <solid android:color="@color/colorAccent" /> 
    <corners
      android:bottomLeftRadius="500dp"
      android:bottomRightRadius="500dp"
      android:topLeftRadius="500dp"
      android:topRightRadius="500dp" />
</shape>

अब, आप इस आकृति का उपयोग किस तत्व में करना चाहते हैं: android:background="@drawable/custom_round_ui_shape"

"Custom_round_ui_shape" नाम के ड्रॉबल में एक नया XML बनाएँ


1

राउंड आयत के लिए CardView का उपयोग करें । CardView कार्डकॉर्नररेडियस, कार्डबैकग्राउंडरक्लोर, कार्डएलेवेशन और कई तरह की कार्यक्षमता प्रदान करता है। CardView UI को अधिक उपयुक्त बनाता है और फिर कस्टम राउंड रेक्टेंगल को आकर्षित करता है।


1

आप ड्रॉबल्स फ़ोल्डर में एक नई xml पृष्ठभूमि को परिभाषित कर सकते हैं

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="enter_your_desired_color_here" />
<corners android:radius="enter_your_desired_radius_the_corners" />
</shape>  

इसके बाद बस इसे अपने टेक्स्ट व्यू या एडिट टेक्स्ट में बैकग्राउंड में परिभाषित करके शामिल करें।

<TextView
 android:id="@+id/textView"
 android:layout_width="0dp"
 android:layout_height="80dp"
 android:background="YOUR_FILE_HERE"
 Android:layout_weight="1"
 android:gravity="center"
 android:text="TEXT_HERE"
 android:textSize="40sp" />

0

Right_click पर क्लिक करें और उदाहरण के लिए बटन के नाम पर नई लेआउट xml फ़ाइल बनाएँ_background.xml। फिर निम्नलिखित कोड को कॉपी और पेस्ट करें। आप अपनी जरूरत के अनुसार इसे बदल सकते हैं।

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="14dp" />
<solid android:color="@color/colorButton" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<size
android:width="120dp"
android:height="40dp" />
</shape>

अब आप इसका उपयोग कर सकते हैं।

<Button
android:background="@drawable/button_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

0
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white" />
    <corners android:radius="4dp" />
</shape>

कृपया अपने उत्तर के लिए कुछ स्पष्टीकरण प्रदान करें
निष्पादन योग्य
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.