উত্তর:
CommonsWare দ্বারা রচিত একটি চেয়ে সহজ উপায় আছে। কেবল একটি অঙ্কনযোগ্য সংস্থান তৈরি করুন যা পথটি কীভাবে আঁকবে তা নির্দিষ্ট করে 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 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
চারটি কোণটি শেষ হয়ে গেছে up সাহায্য করুন. :(
আর একবার চেষ্টা কর,
আপনার অঙ্কনযোগ্যতে 1. গোলাকার_ডিটটেক্সট.এক্সএমএল ফাইল তৈরি করুন
<?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. এক্সএমএল ফাইলে আপনার সম্পাদনা পাঠের জন্য পটভূমি প্রয়োগ করুন
<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
ব্যাকগ্রাউন্ড তৈরি করে (আপনার এসডিকে পাওয়া যায়)StateListDrawable
সংস্থানটি ক্লোন করুনEditText
ব্যাকগ্রাউন্ডগুলিকে একক হিসাবেDrawable
এবং আপনার আরও গোলাকার নয়-প্যাচ পিএনজি ফাইলগুলিতে নির্দেশ করতে এটি সংশোধন করুন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
।
কেবলমাত্র অন্য উত্তরগুলি যুক্ত করার জন্য, আমি দেখতে পেলাম যে বৃত্তাকার কোণগুলি অর্জনের সবচেয়ে সহজ সমাধানটি হ'ল নিম্নলিখিতটি আপনার সম্পাদনা পাঠের পটভূমি হিসাবে সেট করা।
<?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
ডিফল্ট ছাড়াও ফোকাস, অক্ষম, চাপ, এবং নির্বাচিত জন্য বিভিন্ন ব্যাকগ্রাউন্ড আছে। গুগল টিভির মতো টাচস্ক্রিনের অভাবজনিত এমন কিছু অ্যান্ড্রয়েড ডিভাইস পেলে মনোনিবেশ করা, বিশেষত, এগিয়ে যাওয়া গুরুত্বপূর্ণ হতে পারে।