android - টেক্সটইনপুটআল্টআউট ত্রুটি বার্তার রঙ কীভাবে সেট করবেন?




android-textinputlayout (6)

আপনার পছন্দসই স্টাইল তৈরি করুন যা আপনার styles.xml ফাইলে পিতামাতার হিসাবে @android:style/TextAppearance ব্যবহার করে:

<style name="error_appearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/red_500</item>
    <item name="android:textSize">12sp</item>
</style>

এবং এটি আপনার টেক্সটইনপুট লেআউট উইজেটে ব্যবহার করুন:

 <android.support.design.widget.TextInputLayout
            android:id="@+id/emailInputLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:errorTextAppearance="@style/error_appearance">

সম্পাদনা করুন: ইঙ্গিতটি এবং ত্রুটির জন্য বিভিন্ন রঙ ধারণ করতে আপনার টেক্সটআইপুটলয়েট (সম্পাদনা পাঠ্য পাঠ্যদর্শন, ইত্যাদি) এর ভিতরে থাকা অবজেক্টটিতে ইঙ্গিতটি সেট করুন

আমি কীভাবে ত্রুটি বার্তার রঙ পরিবর্তন করতে পারি যা পাঠ্য ক্ষেত্রের নীচে পাঠ্য TextInputLayout সেট করা যেতে পারে ( setError(...) মাধ্যমে setError(...) - এখানে ত্রুটির অবস্থা দেখুন )?

এটি সাধারণত একটি লাল রঙ হিসাবে প্রদর্শিত হয়, যা আমি পরিবর্তন করতে চাই। রঙটি লক্ষ্য করতে আমার styles.xml ফাইলটিতে কোন আইটেমের নাম / কীগুলি ব্যবহার করা উচিত?

আগাম ধন্যবাদ.


সম্পাদনা:

যুক্ত করা app:errorTextAppearance আমার TextInputLayout app:errorTextAppearance কী:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:id="@+id/welcome_current_week_container"
        app:errorTextAppearance="@style/WelcomeErrorAppearance">
        <EditText
            ..../>
    </android.support.design.widget.TextInputLayout>
</LinearLayout>

এবং ত্রুটির উপস্থিতি (পরীক্ষার জন্য সবুজতে সেট করা) :

<style name="WelcomeErrorAppearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">@android:color/holo_green_dark</item>
</style>

ফলটি হ'ল ইঙ্গিতটির পাশাপাশি ত্রুটির বার্তাটি রঙিন হয় (স্কেলডশটগুলি স্কেলড অ্যান্ড্রয়েড এমুলেটর থেকে নেওয়া) :

নিয়মিত (কোনও ত্রুটি নেই):

ত্রুটি অবস্থা:

সম্পাদনা 2 / ফলাফল:

ত্রুটি বার্তা উপস্থিত হলে, ক্ষেত্রের উপরের চিত্রটি ত্রুটি বার্তা হিসাবে একই রঙে পরিবর্তিত হয়, ইঙ্গিত রঙকে ওভাররাইড করে - এটি নকশা দ্বারা।


আমি এই গতিশীলভাবে করা প্রয়োজন। প্রতিবিম্ব ব্যবহার:

public static void setErrorTextColor(TextInputLayout textInputLayout, int color) {
  try {
    Field fErrorView = TextInputLayout.class.getDeclaredField("mErrorView");
    fErrorView.setAccessible(true);
    TextView mErrorView = (TextView) fErrorView.get(textInputLayout);
    Field fCurTextColor = TextView.class.getDeclaredField("mCurTextColor");
    fCurTextColor.setAccessible(true);
    fCurTextColor.set(mErrorView, color);
  } catch (Exception e) {
    e.printStackTrace();
  }
}

textInputLayout.setErrorEnabled(true) কাজ করার জন্য উপরের পদ্ধতিটি textInputLayout.setErrorEnabled(true) আগে আপনাকে textInputLayout.setErrorEnabled(true) কল করতে হবে।


একদিকে নোট। আমি errorTextAppereance সহ গৃহীত সমাধানটি চেষ্টা errorTextAppereance । এটি সত্যিই দুর্দান্ত কাজ করে তবে প্রথমে, নতুন errorTextAppereance শৈলী প্রয়োগ করার পরে ইনপুট আন্ডারলাইন রঙ পরিবর্তন করা হয়নি। আমি দেখতে পাচ্ছি এখানে কয়েকটি মন্তব্য রয়েছে এবং অন্যান্য ব্যক্তিরাও একই সমস্যাটি ভোগ করছেন।

আমার ক্ষেত্রে, এটি ঘটছিল যখন আমি একটি নতুন ত্রুটি পাঠ্য সেট করার পরে একটি নতুন স্টাইল সেট করছিলাম। এটার মত:

passwordInputLayout.error = "Password strength"
passwordInputLayout.setErrorTextAppearance(R.style.InputError_Purple)

এই দুটি পদ্ধতির ক্রমটি স্যুইচ করার পরে পাঠ্যটি আন্ডারলাইন করে এবং প্রত্যাশা অনুযায়ী রঙ পরিবর্তন হয়।

passwordInputLayout.setErrorTextAppearance(R.style.InputError_Purple)
passwordInputLayout.error = "Password strength"

এবং ত্রুটি পাঠ্যের উপস্থিতি শৈলীটি দেখতে এরকম কিছু দেখাচ্ছে:

<style name="InputError" parent="TextAppearance.Design.Error"/>
<style name="InputError.Purple">
    <item name="android:textColor">@color/purple</item>
</style>

প্রকৃতপক্ষে, কেবল ত্রুটি বার্তার রঙ পরিবর্তন করতে, আপনি আপনার textColorError সেট করতে পারেন (এবং সাধারণ উইজেট এবং ইঙ্গিত পাঠ্যের রঙের জন্য colorControlNormal এবং colorControlActivated ) সেট করতে পারেন। TextInputLayout সেই বৈশিষ্ট্যটি TextInputLayout দ্রষ্টব্য: আপনি যদি কোনও কাস্টম শৈলীতে errorTextAppearance সেট করে errorTextAppearance তবে textColorError কোনও প্রভাব থাকবে না।

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">@color/control_normal</item>
    <item name="colorControlActivated">@color/control_activated</item>
    <item name="textColorError">@color/error</item>
    <!-- other styles... -->
</style>

এবং আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল:

<application
    android:theme="@style/AppTheme"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">

    <!-- ... -->

</application>

যদি আপনি com.google.android.matory.textfield.TextInput ব্যবহার করছেন তবে এই ইনপুট লেআউটটি কেবলমাত্র একটি স্টাইল সেট করার চেয়ে ছাড়ুন

<com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayoutPassword"
                        style="@style/LoginTextInputLayoutStyle"



<style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
        <item name="boxStrokeColor">@color/text_input_box</item>
        <item name="errorTextColor">@color/colorRed</item>
    </style>

হালনাগাদ

পরিবর্তে একটি কাস্টম ভিউ ব্যবহার করুন এবং এটি না

@ জ্যারেডের উত্তরের একটি পরিবর্তিত সংস্করণ যা আমার ক্ষেত্রে কাজ করে:

public static void setErrorTextColor(TextInputLayout textInputLayout, int color) {
    try {
        Field fErrorView = TextInputLayout.class.getDeclaredField("mErrorView");
        fErrorView.setAccessible(true);
        TextView mErrorView = (TextView)fErrorView.get(textInputLayout);
        mErrorView.setTextColor(color);
        mErrorView.requestLayout();
    } catch (Exception e) {
        e.printStackTrace();
    }
}




android-textinputlayout