গোলাকার কোণগুলি দিয়ে সম্পাদনা পাঠ্য কীভাবে তৈরি করবেন?


উত্তর:


566

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>

15
আপনার সমাধানটি সমস্ত রাজ্যের জন্য একই আঁকতে সক্ষম ব্যবহার করে। একটি নিয়মিত EditTextডিফল্ট ছাড়াও ফোকাস, অক্ষম, চাপ, এবং নির্বাচিত জন্য বিভিন্ন ব্যাকগ্রাউন্ড আছে। গুগল টিভির মতো টাচস্ক্রিনের অভাবজনিত এমন কিছু অ্যান্ড্রয়েড ডিভাইস পেলে মনোনিবেশ করা, বিশেষত, এগিয়ে যাওয়া গুরুত্বপূর্ণ হতে পারে।
CommonsWare

এটা অসাধারণ! এটি ডিভাইসে সূক্ষ্মভাবে কাজ করে তবে আমি বৃত্তাকার সম্পাদনা বাক্সটি অন্তর্ভুক্ত করার সময় 'গ্রাফিকাল লেআউট' দর্শনটিকে আমার ক্রিয়াকলাপ প্রদর্শন করতে বাধা দেয়। ত্রুটি লগ আমাকে একটি 'অসমর্থিত অপারেশন এক্সপেশন: নাল' দেয়। কোন ধারনা?
বেন ক্লেটন 15

জেনে রাখা ভাল ... আসলে আমি কীভাবে এটি ঠিক করতে জানি না। আমি অনুভব করি এটি একটি Eclipse এর ADT বাগ।
ক্রিশ্চিয়ান

চমৎকার উত্তর। আমি যখন সর্বশেষ এডিটি দিয়ে এটি করার চেষ্টা করি তখন কিছুই হয় না তবে ইউআই ডিজাইনের স্ক্রিনটি শেডযুক্ত হয়ে যায় .. কিছুটা বিরক্ত হলেও। তবে চমৎকার উত্তর। আমার বস থেকে আমাকে বাঁচিয়েছেন :)
জয় মায়ু

2
যদি আপনার ব্যাসার্ধ android:radius4 লাইন সংজ্ঞায়িত করার পরিবর্তে 4 কোণার ব্যবহারের জন্য একই হয়
বিশ্বনাথ লেকশমনান

129

এখানে কেবলমাত্র একটি এক্সএমএল ফাইলের একই সমাধান (কিছু অতিরিক্ত বোনাস কোড সহ):

<?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"/>

"প্রস্থ" বৈশিষ্ট্যে "0.5dp" হিসাবে ত্রুটি পাওয়া বৈধ বিন্যাস নয়।
মাভেň ツ

আমি উপরের সমাধানটি ব্যবহার করার চেষ্টা করেছি তবে দুর্ভাগ্যক্রমে, যখন আমি সবেমাত্র সেট করেছি topRightRadiusএবং topLeftRadiusচারটি কোণটি শেষ হয়ে গেছে up সাহায্য করুন. :(
ikartik90

30

আর একবার চেষ্টা কর,

আপনার অঙ্কনযোগ্যতে 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. আপনি এই মত আউটপুট পাবেন

এখানে চিত্র বর্ণনা লিখুন


1
শচীন আপনার আউটপুট চিত্রটি প্রশ্নকর্তার অনুরোধ অনুসারে বর্গাকার কোণগুলি বৃত্তাকার নয় shows এই বক্সটি একটি বাহ্যরেখা পেতে ভাল উপায় হতে পারে।
জেসিবয়েড

2
@ জেসবয়ড, আপনার উদ্বেগ ঠিক আছে তবে এই এক্সএমএল ফাইলটিতে গোল_আডিটেক্সটেক্স কেবল আপনার প্রয়োজন অনুসারে সমস্ত রেডিয়াসের মান পরিবর্তন করে।
সাতিন পাংগরে

17

নরফেল্ডের উত্তরের জন্য ধন্যবাদ। আরও ভাল অভ্যন্তরীণ ছায়া প্রভাবের জন্য আমি এর গ্রেডিয়েন্টকে সামান্য পরিবর্তন করেছি।

<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>

হালকা পটভূমি বিন্যাসে দুর্দান্ত দেখাচ্ছে ..

এখানে চিত্র বর্ণনা লিখুন


7

আমার চিন্তাভাবনার দ্বারা এটি ইতিমধ্যে গোলাকার কোণে রয়েছে।

আপনি যদি এগুলি আরও বৃত্তাকার চান তবে আপনার প্রয়োজন হবে:

  1. নয়টি প্যাচযুক্ত পিএনজি চিত্রের সমস্ত ক্লোন করুন যা একটি EditTextব্যাকগ্রাউন্ড তৈরি করে (আপনার এসডিকে পাওয়া যায়)
  2. আরও গোলাকার কোণে প্রতিটি পরিবর্তন করুন
  3. সেগুলিকে সংযুক্ত করে এক্সএমএল StateListDrawableসংস্থানটি ক্লোন করুনEditText ব্যাকগ্রাউন্ডগুলিকে একক হিসাবেDrawable এবং আপনার আরও গোলাকার নয়-প্যাচ পিএনজি ফাইলগুলিতে নির্দেশ করতে এটি সংশোধন করুন
  4. যে নতুন ব্যবহার করুন StateListDrawableআপনার জন্য পটভূমি হিসেবে EditTextউইজেট

3

যদি আপনি চান তবে কেবল কোণটি সম্পূর্ণ শেষ নয়, তবে নীচের কোডটি ব্যবহার করুন।

<?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


2

কেবলমাত্র অন্য উত্তরগুলি যুক্ত করার জন্য, আমি দেখতে পেলাম যে বৃত্তাকার কোণগুলি অর্জনের সবচেয়ে সহজ সমাধানটি হ'ল নিম্নলিখিতটি আপনার সম্পাদনা পাঠের পটভূমি হিসাবে সেট করা।

<?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>

2

উপাদান উপাদান লাইব্রেরির সাহায্যে আপনি কাস্টম আকারগুলি আঁকার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 সংস্করণ প্রয়োজন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.