গুগল বর্ণিত হিসাবে ত্রুটি বার্তা প্রদর্শন করতে অ্যান্ড্রয়েড এডিটেক্সট ডিজাইন করুন


151

আমার EditTextএটিকে এরর মতো দেখতে একটি দরকার :

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

কলিং এআরারের পরিবর্তে এর মতো দেখাচ্ছে:

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

দ্রষ্টব্য: অ্যাপ্লিকেশনটি SDK 19 এ চলছে (4.4.2)

মিনিট এসডিকে 1

সেটআরারের অনুরূপ কোনও পদ্ধতি আছে যা এটি স্বয়ংক্রিয়ভাবে ঘটে বা আমি কি এর জন্য কোডটি লিখতে পারি?

ধন্যবাদ


1
আপনি কেবল একটি দিয়ে এটি করতে সক্ষম হবেন সম্ভাবনা নেই EditText। আরও সম্ভবত, আপনার এমন কিছু প্রয়োজন হবে যা এটি মোড়ানো EditTextবা অন্যথায় যুক্ত করে। Github.com/rengwuxian/MaterialEditText দেখুন ।
কমন্সওয়্যার

উত্তর:


330

গুগল এর TextInputLayoutঅংশ হিসাবে প্রবর্তন করায় তৃতীয় পক্ষের পাঠাগারটি ব্যবহার করার দরকার নেই design-support-library

একটি মৌলিক উদাহরণ অনুসরণ করা:

বিন্যাস

<android.support.design.widget.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your name" />

</android.support.design.widget.TextInputLayout>

দ্রষ্টব্য: এর বৈশিষ্ট্য app:errorEnabled="true"হিসাবে সেট করে TextInputLayoutকোনও ত্রুটি প্রদর্শিত হয়ে গেলে এর আকার পরিবর্তন হবে না - সুতরাং এটি মূলত স্থানটিকে অবরুদ্ধ করে।

কোড

অর্ডার নীচের ত্রুটিটি দেখানোর জন্য EditTextআপনি কেবল কল প্রয়োজন #setErrorউপর TextInputLayout(না শিশুটির ওপর EditText):

TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout);
til.setError("You need to enter a name");

ফলাফল

ত্রুটি বার্তা সহ সম্পাদনা পাঠ্য দেখানো ছবি

ত্রুটিটি আড়াল করতে এবং রঙটি পুনরায় সেট করতে কেবল কল করুন til.setError(null)


বিঃদ্রঃ

এটি ব্যবহার করতে TextInputLayoutআপনাকে আপনার build.gradleনির্ভরতার সাথে নিম্নলিখিতগুলি যুক্ত করতে হবে :

dependencies {
    compile 'com.android.support:design:25.1.0'
}

একটি কাস্টম রঙ সেট করা হচ্ছে

ডিফল্টরূপে লাইনটি EditTextলাল হবে। আপনার যদি আলাদা রঙ প্রদর্শন করতে হয় তবে আপনি কল করার সাথে সাথেই নীচের কোডটি ব্যবহার করতে পারেন setError

editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);

এটিকে সাফ করার জন্য এই ফাংশনটিতে কেবল কল করুন clearColorFilter:

editText.getBackground().clearColorFilter();

3
হ্যাঁ ! এটাই ! যদিও আপনি লাইনটি লাল করেন?
কিমিএন

3
@kmn লাইনটি লাল করা বাক্স থেকে বেরিয়ে আসে না তাই আপনার নিজেরাই এটি করা দরকার। আমার সম্পাদনা দেখুন। ইঙ্গিতটি সরানোর ক্ষেত্রে: এটি আফিক সম্ভব নয়।
পুনর্বিবেচনা করুন

5
@ অ্যালেসিও আমি কেবল এটাই বলার চেষ্টা করেছি যে আপনি অ্যাপকম্প্যাটঅ্যাক্টিভিটি প্রসারিত করার সময় এটি কাজ করা উচিত। তবুও: অ্যাপক্যাম্প্যাট-ভি 23 হিসাবে আর কোনও রঙিন ফিল্টার সেট করা দরকার নেই, আপনি কল textInputLayout.setError("Error messsage")করার সাথে সাথেই রঙটি EditTextলাল হয়ে যেতে হবে। এটি পুনরায় সেট করার জন্য, এটি কল করার জন্য যথেষ্ট textInputLayout.setError(null)
পুনর্বিবেচনা করুন

3
editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);সর্বশেষ সমর্থন লাইব্রেরিটির সাথে আর দরকার নেই
এন্টোইন বলভি

13
কেবলমাত্র লক্ষ করাতে চেয়েছিলেন, যেহেতু এটি এত ছোট একটি বিশদ বিবরণ - সেটআপ এয়ারারকে EditTextনয়, কল করে আমার এই সমস্যা হয়েছিল TextInputLayout। আমি এই উত্তরটি দেখেছি এবং আমার কী পরিবর্তন করতে হবে তা এখনও বুঝতে পারি নি। খুব সহজ জিনিস মিস করতে।
h_k

8

এর myTextInputLayout.setError()পরিবর্তে কল করুন myEditText.setError()

এই ধারক এবং ধারকটি ত্রুটি সেটিংয়ের দ্বিগুণ কার্যকারিতা রয়েছে। আপনার প্রয়োজনীয় কার্যকারিতা হ'ল কনটেইনারটি। তবে এর জন্য আপনার সর্বনিম্ন 23 সংস্করণ প্রয়োজন version


7

আপনার EditTextএকটি আবৃত করা উচিতTextInputLayout

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tilEmail">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        android:id="@+id/etEmail"
        android:hint="Email"
        android:layout_marginTop="10dp"
        />

</android.support.design.widget.TextInputLayout>

আপনি যেমন চান ত্রুটি বার্তা পেতে, ত্রুটি সেট করুন TextInputLayout

TextInputLayout tilEmail = (TextInputLayout) findViewById(R.id.tilEmail);
if (error){
    tilEmail.setError("Invalid email id");    
}

আপনার নকশা সমর্থন লাইব্রেরি নির্ভরতা যুক্ত করা উচিত। আপনার গ্রেড নির্ভরতা মধ্যে এই লাইন যুক্ত করুন

compile 'com.android.support:design:22.2.0'

4

রিভার্সের উত্তর দুর্দান্ত তবে এটি কীভাবে ভাসমান ত্রুটি টুলটিপ ধরণের জিনিসটি সরিয়ে ফেলা যায় তা নির্দেশ করে না

আপনার edittext.setError(null)এটি অপসারণ করতে হবে।
এছাড়াও, যেমন কেউ নির্দেশ করেছেন, আপনার প্রয়োজন নেইTextInputLayout.setErrorEnabled(true)

বিন্যাস

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/edittext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter something" />
</android.support.design.widget.TextInputLayout>

কোড

TextInputLayout til = (TextInputLayout) editText.getParent();
til.setError("Your input is not valid...");
editText.setError(null);


0

উত্তরটিতে উল্লিখিত গুগলের ডিজাইন লাইব্রেরি ব্যবহার করে এখনও যদি কেউ ত্রুটির মুখোমুখি হন তবে দয়া করে @h_k এর মন্তব্য হিসাবে এটি ব্যবহার করুন - যা

টেক্সটইনপুটআলআউটটিতে সেটএরআর কল করার পরিবর্তে , আপনি নিজেই সম্পাদনা পাঠ্যে সেটআরার ব্যবহার করছেন


0
private EditText edt_firstName;
private String firstName;

edt_firstName = findViewById(R.id.edt_firstName);

private void validateData() {
 firstName = edt_firstName.getText().toString().trim();
 if (!firstName.isEmpty(){
//here api call for ....
}else{
if (firstName.isEmpty()) {
                edt_firstName.setError("Please Enter First Name");
                edt_firstName.requestFocus();
            } 
}
}

কোনও পুরানো প্রশ্নের উত্তর দেওয়ার সময়, অন্য উত্তর স্ট্যাকওভারফ্লো ব্যবহারকারীদের কাছে আপনার উত্তরটি আরও কার্যকর হবে যদি আপনি নিজের উত্তর কীভাবে সহায়তা করে তা ব্যাখ্যা করার জন্য কিছু প্রসঙ্গ অন্তর্ভুক্ত করে, বিশেষত ইতিমধ্যে স্বীকৃত উত্তর রয়েছে এমন একটি প্রশ্নের জন্য। দেখুন: আমি কীভাবে ভাল উত্তর লিখব
ডেভিড বাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.