जवाबों:
कॉमन्सवेयर द्वारा लिखित एक से एक आसान तरीका है। बस एक EditText
आकर्षित करने योग्य संसाधन बनाएं जो कि जिस तरह से खींचा जाएगा वह निर्दिष्ट करता है :
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
फिर, इस लेआउट को अपने लेआउट में देखें:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
आपको कुछ ऐसा मिलेगा:
मार्क की टिप्पणी के आधार पर, मैं उस तरीके को जोड़ना चाहता हूं जिससे आप अपने लिए अलग राज्य बना सकते हैं EditText
:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/rounded_edittext" />
</selector>
ये राज्य हैं:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_focused.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<stroke android:width="2dp" android:color="#FF0000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
और ... अब, EditText
जैसा दिखना चाहिए:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/rounded_edittext_states"
android:padding="5dip"/>
</LinearLayout>
android:radius
4 लाइनों को परिभाषित करने के बजाय सभी 4 कोनों के लिए समान है
यहाँ एक ही समाधान (कुछ अतिरिक्त बोनस कोड के साथ) सिर्फ एक XML फ़ाइल में है:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/edittext_rounded_corners.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_focused="true">
<shape>
<solid android:color="#FF8000"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="true" android:state_focused="false">
<shape>
<solid android:color="#FF8000"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_focused="true">
<shape>
<solid android:color="#FFFFFF"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_focused="false">
<shape>
<gradient
android:startColor="#F2F2F2"
android:centerColor="#FFFFFF"
android:endColor="#FFFFFF"
android:angle="270"
/>
<stroke
android:width="0.7dp"
android:color="#BDBDBD" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_enabled="true">
<shape>
<padding
android:left="4dp"
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
/>
</shape>
</item>
</selector>
आप तब पृष्ठभूमि विशेषता को edittext_rounded_corners.xml फ़ाइल में सेट करते हैं:
<EditText android:id="@+id/editText_name"
android:background="@drawable/edittext_rounded_corners"/>
topRightRadius
और topLeftRadius
सभी चार कोनों को गोल किया। कृपया मदद कीजिए। :(
इसको आजमाओ,
1. अपनी Drawable में Rounded_edittext.xml फ़ाइल बनाएँ
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="15dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"/>
<stroke android:width="1dip" android:color="#f06060" />
</shape>
2. xml फ़ाइल में अपने EditText की पृष्ठभूमि
<EditText
android:id="@+id/edit_expiry_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:background="@drawable/rounded_edittext"
android:hint="@string/shop_name"
android:inputType="text"/>
3. आप इस तरह उत्पादन मिल जाएगा
नॉरफ़ेल्ट के उत्तर के लिए धन्यवाद। मैंने बेहतर आंतरिक छाया प्रभाव के लिए इसके बदलाव में थोड़ा बदलाव किया है।
<item android:state_pressed="false" android:state_focused="false">
<shape>
<gradient
android:centerY="0.2"
android:startColor="#D3D3D3"
android:centerColor="#65FFFFFF"
android:endColor="#00FFFFFF"
android:angle="270"
/>
<stroke
android:width="0.7dp"
android:color="#BDBDBD" />
<corners
android:radius="15dp" />
</shape>
</item>
एक प्रकाश पृष्ठभूमि लेआउट में बहुत अच्छा लग रहा है ..
मेरे सोचने के तरीके से, यह पहले से ही गोल कोनों में है।
यदि आप उन्हें अधिक गोल चाहते हैं, तो आपको निम्नलिखित की आवश्यकता होगी:
EditText
पृष्ठभूमि बनाने वाले नौ-पैच PNG चित्रों के सभी क्लोन करें (आपके SDK में पाया गया)StateListDrawable
संसाधन को क्लोन करें जो उन EditText
बैकग्राउंड को एक सिंगल में जोड़ता है Drawable
, और इसे संशोधित करके आपके अधिक-गोल नौ-पैच PNG फ़ाइलों को इंगित करता हैStateListDrawable
अपने EditText
विजेट के लिए पृष्ठभूमि के रूप में उस नए का उपयोग करेंयदि आप चाहते हैं कि केवल कोने ही पूरे छोर पर वक्र न हों, तो नीचे दिए गए कोड का उपयोग करें।
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="10dp" />
<padding
android:bottom="3dp"
android:left="0dp"
android:right="0dp"
android:top="3dp" />
<gradient
android:angle="90"
android:endColor="@color/White"
android:startColor="@color/White" />
<stroke
android:width="1dp"
android:color="@color/Gray" />
</shape>
यह केवल चार कोणों को वक्र करेगा EditText
।
बस अन्य उत्तरों में जोड़ने के लिए, मैंने पाया कि गोल कोनों को प्राप्त करने का सबसे सरल समाधान निम्नलिखित था, जो आपके Edittext की पृष्ठभूमि के रूप में निम्नलिखित सेट करना था।
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white"/>
<corners android:radius="8dp"/>
</shape>
सामग्री अवयव पुस्तकालय के साथ आप उपयोग कर सकते हैं MaterialShapeDrawable
कस्टम आकृतियों को आकर्षित करने लिए ।
के साथ EditText
आप कर सकते हैं:
<EditText
android:id="@+id/edittext"
../>
फिर एक बनाएँ MaterialShapeDrawable
:
float radius = getResources().getDimension(R.dimen.default_corner_radius);
EditText editText = findViewById(R.id.edittext);
//Apply the rounded corners
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();
MaterialShapeDrawable shapeDrawable =
new MaterialShapeDrawable(shapeAppearanceModel);
//Apply a background color
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.white));
//Apply a stroke
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color.colorAccent));
ViewCompat.setBackground(editText,shapeDrawable);
यह पुस्तकालय के संस्करण 1.1.0 की आवश्यकता है ।
EditText
डिफ़ॉल्ट के अलावा एक नियमित रूप से फ़ोकस, अक्षम, दबाया और चयनित के लिए अलग पृष्ठभूमि होती है। विशेष रूप से ध्यान केंद्रित किया जा सकता है, अगर हम कुछ एंड्रॉइड डिवाइस प्राप्त कर सकते हैं जो टचस्क्रीन की कमी है, जैसे कि Google टीवी।