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


90

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

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

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


সম্পাদনা করুন:

যোগ করা হয়েছে app:errorTextAppearanceআমার চাবিকাঠি TextInputLayout:

<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 / ফলাফল:

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



ত্রুটি রঙটি ত্রুটি অবস্থায় ইঙ্গিত রঙের পরিবর্তে। এটি নকশা দ্বারা। Google.com/design/spec/compferences/… দেখুন / আপনি টেক্সটআইপুটলয়েট ক্লাসে পরিবর্তন না করে এপাশে কাজ করতে পারবেন না।
ইউজেন পেচানেক

@ ইউজেনপ্যাচেনেক আমি বুঝতে পারি নি যে এটিই ছিল। ব্যাখ্যা করার জন্য ধন্যবাদ
সেব জ্যাচেক

4
@ ইউজেনপ্যাচেনেক আমি খুব নিশ্চিত যে আপনি এখানে ভুল করেছেন। আপনি যে অংশটি উল্লেখ করছেন সেটি হ'ল চরিত্রের কাউন্টার থেকে। স্বাভাবিক ক্ষেত্রের জন্য ত্রুটি এই ছবিতে (যে বিজ্ঞপ্তি ইঙ্গিতটি রঙ্গিন হয় না) মত হওয়া উচিত material-design.storage.googleapis.com/publish/material_v_4/...
Arkadiusz 'মাছি' Rzadkowolski

4
@ ইউজেনপ্যাচেনেক কোড. google.com/p/android/issues/detail?id=195775 - এটি আসলে ত্রুটি ছিল এবং ভবিষ্যতে মুক্তি পেতে ঠিক করা হবে :)
আরকাদিউস 'উড়ে গেছে' রাজ্জাদকোভলস্কি

উত্তর:


140

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

<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 (অভ্যন্তরীণ উপর ইঙ্গিতটি সেট EditText, TextViewইত্যাদি) ইঙ্গিত এবং ত্রুটির জন্য বিভিন্ন রং রাখা।


4
ধন্যবাদ সোজা মনে হচ্ছে তবে আমার জীবনের জন্য এটি কোনওভাবে খুঁজে পেল না!
সেব জ্যাচেক

4
আপডেট: কেবল ত্রুটি বার্তার স্টাইলিং পরিবর্তন করা সম্ভব? এটি ফিল্ডের ওপরেও ইঙ্গিত শৈলীর পরিবর্তিত বলে মনে হচ্ছে।
সেব জ্যাচেক

সত্যি? আমার জন্য নয়, উপরের ছবিটি দেখুন। আপনি কি নিশ্চিত যে আপনি স্টাইলটি বরাদ্দ করছেন app:errorTextAppearance?
dabo248

4
@EugenPechanec সরলীকৃত এটা ভালো দেখায়: <android.support.design.widget.TextInputLayout app:errorTextAppearance="@style/error_appearance"><AutoCompleteTextView android:hint="@string/prompt_email"/></android.support.design.widget.TextInputLayout>। হ্যাঁ, এটি অন্য একটি টেক্সটভিউ, সে কারণেই এটি টেক্সটআইপুটলয়েট থেকে ত্রুটির রঙ নেয় না।
dabo248

7
আপনি শুধুমাত্র রং পরিবর্তন করতে চান, এটা আপনি শৈলী এর সেট সেরা parentথেকে parent="TextAppearance.Design.Error"। এইভাবে, এটি ডিফল্ট পাঠ্য আকার এবং অন্য কোনও বৈশিষ্ট্য ধরে রাখে, তবে আসুন আপনি বিশেষত ত্রুটির রঙটি কাস্টমাইজ করুন, যা হাতের প্রশ্নের লক্ষ্য ছিল।
ডাব্লু 3

28

আসলে, কেবল ত্রুটি বার্তার রঙ পরিবর্তন করতে, আপনি সেট করতে পারেন textColorError আপনার থিম (এবং সেট colorControlNormalএবং colorControlActivatedসাধারণ উইজেট এবং ইঙ্গিতটি পাঠ্যের রঙ জন্য)। TextInputLayoutসেই গুণটি তুলে ধরে। দ্রষ্টব্য: আপনি যদি 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>

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

এটি উচ্চতর স্কোরিংয়ের চেয়ে অনেক ভাল উত্তর!
ফিলথোমাস 26

6
আমার জন্য, এই সমাধানটির ফলে ত্রুটি ঘটেছে ( textColorErrorপাওয়া যায় নি) তবে আমি colorErrorআমার থিমটিতে অ্যাট্রিবিউট সেট করতে পেরেছি । অ্যান্ড্রয়েড / সমর্থন লাইব্রেরির প্রতিটি সংস্করণের মতো মনে হচ্ছে এর নিজস্ব থিম বৈশিষ্ট্য রয়েছে।
স্লাভ

9
আমি 'অ্যান্ড্রয়েড রিসোর্স লিঙ্কিং ব্যর্থ হয়েছে' <item name="colorError">@color/error</item>
পেয়েছি

4
দয়া করে পোস্ট আপডেট করুন .. পাঠ্য রঙের ত্রুটি এখন রঙআরর।
ম্যাট ওল্ফ

7

একদিকে নোট। আমি এর সাথে গ্রহণযোগ্য সমাধানটি চেষ্টা করেছি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>

আপনার আর স্টাইল.আইনপুট এরর_পর্পাল দেখতে কেমন?
toobsco42

@ toobsco42 শৈলী কেবল পাঠ্যের রঙকে সংজ্ঞায়িত করে। আমি উত্তরটি বাস্তব প্রয়োগের মাধ্যমে সম্পাদনা করেছি।
ইভান মারিć

ধন্যবাদ! আমি এই দৃশ্যটি একটি বৈধ পাঠ্য এবং ত্রুটির পাঠ্য (সবুজ এবং লাল) উভয়ের জন্য ব্যবহার করি এবং আন্ডারলাইন রঙটি সঠিকভাবে পরিবর্তন না করায় আমাকে পাগল করে চলেছে।
rexar5

6

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

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)এটি কাজ করার জন্য উপরের পদ্ধতিটি চাওয়ার আগে আপনাকে কল করতে হবে ।


ত্রুটি পাঠ্যের রঙ পরিবর্তিত হয় তবে আন্ডারলাইন রঙটি এখনও থেকে যায় এটি একই ফাংশনের পরবর্তী কলটিতে পরিবর্তিত হয়
মোহাম্মদ শাবাজ মুসা

@ Dr.aNdRO এটি প্রতিবিম্ব ব্যবহার করে, এটি সর্বদা কাজ করার নিশ্চয়তা দেয় না!
ucMedia 15

3

উপাদান উপাদান লাইব্রেরিTextInputLayout অন্তর্ভুক্ত সঙ্গে কেবল গুণাবলী ব্যবহার ।app:errorTextColor

    <com.google.android.material.textfield.TextInputLayout
        app:errorTextColor="@color/...."
        .../>

একটি কাস্টম শৈলীতে আপনি ব্যবহার করতে পারেন:

<style name="..." parent="Widget.MaterialComponents.TextInputLayout.FilledBox" >
   <item name="errorTextColor">@color/...</item>
   ...
</style>

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


1

হালনাগাদ

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


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

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();
    }
}

ত্রুটি পাঠ্যের রঙ পরিবর্তিত হয় তবে আন্ডারলাইন রঙটি এখনও থেকে যায় এটি একই ফাংশনের পরবর্তী কলটিতে পরিবর্তিত হয়
মোহাম্মদ শাবাজ মুসা

4
এটি ব্যবহার করবেন না। এটি এখন পর্যন্ত নির্ভরযোগ্য নয়
ডাঃ এএনড্রো

0

যদি আপনি 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>

0

প্রয়োজনের উপর নির্ভর করে, কেউ টেক্সটইনপুট লেআউট পাঠ্যের রঙকে পরিবর্তনশীল / সেট করতে পারেন লেআউট এক্সএমএল ফাইলটিতে। নীচে নমুনা কোড স্নিপেট রয়েছে

আপনার পছন্দসই স্টাইল তৈরি করুন যা আপনার স্টাইল.এক্সএমএল ফাইলে পিতামাতার হিসাবে @ অ্যান্ড্রয়েড: স্টাইল / টেক্সটঅ্যাপেন্স ব্যবহার করে :

<style name="style_error_appearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/color_error</item>
    <item name="android:textSize">11sp</item>
</style>

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

  1. সরাসরি এক্সএমএল লেআউটে
 <android.support.design.widget.TextInputLayout
            android:id="@+id/your_input_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:errorTextAppearance="@style/style_error_appearance">
  1. আপনার ক্লাসে গতিশীল
your_input_layout.setErrorTextAppearance(R.style.style_error_appearance);

আপনি যদি নিজের অ্যাপ্লিকেশনের জন্য একক / একই ত্রুটিযুক্ত পাঠ্যের রঙ সেট করতে চান তবে আপনার অ্যাপ্লিকেশন থিমের পাঠ্য রঙটি সংজ্ঞায়িত করুন

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Error text color... -->
    <item name="textColorError">@color/color_error</item>
    <!-- other styles... -->
</style>

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

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

    <!-- ... -->

</application>

-2

আমি টেক্সটইনপুটআলআউট উত্সটি দেখেছি এবং বুঝতে পেরেছি যে ত্রুটি পাঠ্য রঙ রঙগুলি থেকে পাওয়া গেছে। Xml। এটি আপনার রঙগুলিতে যোগ করুন x এক্সএমএল:

<color name="design_textinput_error_color_light" tools:override="true">your hex color</color>

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