টেক্সটিনপুটআলআউটের লেবেল এবং এডিটেক্সট আন্ডারলাইন অ্যান্ড্রয়েডের রঙ কীভাবে পরিবর্তন করবেন


120

আমি অ্যান্ড্রয়েড ডিজাইনের লাইব্রেরি ব্যবহার করছি TextinputLayout। তবে ইঙ্গিত রঙ, লেবেল রঙ এবং EditTextঅভ্যন্তরের আন্ডারলাইন রঙ কাস্টমাইজ করতে পারেনি TextinputLayout। সাহায্য করুন.


1
ডিজাইনের নির্দেশিকাগুলি অনুসারে কি এর উচ্চারণের রঙটি থাকা উচিত?
রঘুনন্দন

হ্যাঁ, তবে আমার থিমের অ্যাকসেন্টের বর্ণের চেয়ে আলাদা রঙের অনেকগুলি এডিটেক্সটেক্স থাকবে।
নীতেশ ভার্মা


লেবেলের রঙ পরিবর্তন করতে দয়া করে আমার উত্তরটি এখানে পরীক্ষা করুন
Summved জৈন

আমি নিম্নরেখা নির্ভরযোগ্যভাবে পরিবর্তন হতে পারে উভয় দৃষ্টি নিবদ্ধ করা এবং কাস্টম পটভূমি অঙ্কনযোগ্য উল্লেখিত ব্যবহার করে unfocused রাজ্যের stackoverflow.com/a/36543554/2413303
EpicPandaForce

উত্তর:


256

নীচের লাইনের রঙ পরিবর্তন করুন:

<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>

আরও তথ্যের জন্য এই থ্রেডটি পরীক্ষা করুন ।

ভাসমান অবস্থায় ইঙ্গিতের রঙ পরিবর্তন করুন

<style name="MyHintStyle" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/main_color</item>
</style>

এবং এটি এর মতো ব্যবহার করুন:

<android.support.design.widget.TextInputLayout
    ...
    app:hintTextAppearance="@style/MyHintStyle">

ইঙ্গিতের রঙ পরিবর্তন করুন যখন এটি কোনও ভাসমান লেবেল নয়:

<android.support.design.widget.TextInputLayout
    ...
    app:hintTextAppearance="@style/MyHintStyle"
    android:textColorHint="#c1c2c4">

@ অ্যালবএটিএনএফকে ধন্যবাদ


আমি ইঙ্গিতের রঙ পরিবর্তন করতে সক্ষম নই (যখন এটির লেবেল নেই) youআপনি কি সহায়তা করবেন?
নীতেশ ভার্মা

আমি আমার অ্যাপ্লিকেশন আকার সম্পর্কে সত্যই উদ্বিগ্ন, এটি বিবেচনা করে, আমার অ্যাপ্লিকেশনটিতে কত সংখ্যার আকারের আশা করা যায় তার কোনও ধারণা?
নীতেশ ভার্মা

দুঃখিত, আপনার প্রশ্নটি পেলেন না, দয়া করে আরও ব্যাখ্যা করুন, কোন প্রসঙ্গে আকার, অ্যাপের ওজনের গ্রাফিক্সের আকার (যেমন apk 20mb এর উপরে বা কোনও কিছুর উপরে), এবং এর আগে আপনি আমার উত্তরটি গ্রহণ করেন এবং আবার আপনি নিজের গ্রহণযোগ্যতা সরিয়ে দেন, আমি কি জিজ্ঞাসা করতে পারি? , তাই তো?
পঙ্কজ অরোরা

কেননা, আমি আপনার উত্তর অনুসরণ করে ইঙ্গিত রঙ পরিবর্তন করতে পারে না। এর কিছু অংশ আমার পক্ষে কাজ করেছে তবে আমি যা জিজ্ঞাসা করেছি এটির সম্পূর্ণ সমাধান নয় app অ্যাপ্লিকেশন আকারটি পর্যালোচনা করে, ম্যাটেরিয়াল এডিটেক্সট এর মতো বাহ্যিক লাইব্রেরি যুক্ত করে না অ্যাপের আকার বাড়ায়?
নীতেশ ভার্মা

4
@ নীতেশ ভার্মা ইঙ্গিত রঙ নির্ধারণের জন্য সমাধানটি খুঁজে পেয়েছিল, যখন এটি কোনও ভাসমান লেবেল নয়: কেবল এক্সএমএলে সেট android:textColorHintকরা TextInputLayoutথাকে।
AlbAtNf

30

ফেডার কাজাকভ এবং অন্যদের উত্তরগুলির ভিত্তিতে , আমি একটি ডিফল্ট কনফিগার তৈরি করেছি।

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="Widget.Design.TextInputLayout" parent="AppTheme">
        <item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
        <item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item>
        <item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
        <item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
    </style>

    <style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint">
        <!-- Floating label appearance here -->
        <item name="android:textColor">@color/colorAccent</item>
        <item name="android:textSize">20sp</item>
    </style>

    <style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error">
        <!-- Error message appearance here -->
        <item name="android:textColor">#ff0000</item>
        <item name="android:textSize">20sp</item>
    </style>

</resources>

activity_layout.xml

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

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Text hint here"
        android:text="5,2" />

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

দৃষ্টি নিবদ্ধ:

দৃষ্টি নিবদ্ধ

ফোকাস ছাড়াই:

ফোকাস ছাড়া

ভুল বার্তা:

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


8
"ফোকাস ছাড়াই" উদাহরণের জন্য গোলাপী রঙ পেতে আমার কী করা উচিত?
জন স্মিথ

এই স্টাইলটি কীভাবে ব্যবহার করবেন?
হানজালা

23

সাথে উপাদান উপাদান লাইব্রেরী আপনি ব্যবহার করতে পারেন com.google.android.material.textfield.TextInputLayout

রঙগুলি পরিবর্তন করতে আপনি একটি কাস্টম স্টাইল প্রয়োগ করতে পারেন।

ইঙ্গিতটির রঙ পরিবর্তন করতে আপনাকে এই বৈশিষ্ট্যগুলি ব্যবহার করতে হবে:
hintTextColor এবং android:textColorHint

<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
    <!-- The color of the label when it is collapsed and the text field is active -->
    <item name="hintTextColor">?attr/colorPrimary</item>

    <!-- The color of the label in all other text field states (such as resting and disabled) -->
    <item name="android:textColorHint">@color/selector_hint_text_color</item>
</style>

আপনার জন্য একটি নির্বাচক ব্যবহার করা উচিত android:textColorHint। কিছুটা এইরকম:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>

নীচের রেখার রঙ পরিবর্তন করতে আপনাকে বৈশিষ্ট্যটি ব্যবহার করতে হবে:boxStrokeColor

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

এছাড়াও এই ক্ষেত্রে আপনার একটি নির্বাচক ব্যবহার করা উচিত। কিছুটা এইরকম:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>

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

আপনি আপনার বিন্যাসে এই বৈশিষ্ট্যগুলি প্রয়োগ করতে পারেন:

<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
    app:boxStrokeColor="@color/selector_stroke_color"
    app:hintTextColor="?attr/colorPrimary"
    android:textColorHint="@color/selector_hint_text_color"
    ...>

1
টেক্সটইনপ্লেআউটলেটের ভিতরে সম্পাদনা পাঠের আন্ডারলাইন রঙটি কীভাবে পরিবর্তন করবেন? মানে ফোকাসযুক্ত অবস্থা। এটি ধূসর
এভেজেনি ভরোবি

@ উত্তেজনিওরোবি এটি উত্তরে বর্ণিত হয়েছে। এটি দ্বারা সংজ্ঞায়িত করা হয় boxStrokeColor। উদাহরণস্বরূপ selector_stroke_colorবিশেষে শেষ লাইনটি:<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
গ্যাব্রিয়েল মেরিওটি

আপনাকে অনেক ধন্যবাদ! আমি নিজেই তা বের করতে পারি না।
এভেজেনি ভরোবি


17

এই ব্লগ পোস্টটি বিভিন্ন স্টাইলিংয়ের দিকগুলি বর্ণনা করে EditTextএবং এর সাথে AutoCompleteTextViewমোড়ানো TextInputLayout

22.1.0+ এর জন্য EditTextএবং অ্যাপকম্প্যাট লাইব আপনি কিছু থিম সম্পর্কিত সেটিংসের সাথে থিম বৈশিষ্ট্য নির্ধারণ করতে পারেন:

<style name="StyledTilEditTextTheme">
   <item name="android:imeOptions">actionNext</item>
   <item name="android:singleLine">true</item>
   <item name="colorControlNormal">@color/greyLight</item>
   <item name="colorControlActivated">@color/blue</item>
   <item name="android:textColorPrimary">@color/blue</item>
   <item name="android:textSize">@dimen/styledtil_edit_text_size</item>
</style>

<style name="StyledTilEditText">
    <item name="android:theme">@style/StyledTilEditTextTheme</item>
    <item name="android:paddingTop">4dp</item>
</style>

এবং এগুলি প্রয়োগ করুন EditText:

<EditText
    android:id="@+id/etEditText"
    style="@style/StyledTilEditText"

জন্য AutoCompleteTextViewকিছু অধিক এটা মোড়কে কারণ জটিল TextInputLayoutএবং এই থিম ভাসমান ট্যাগ আচরণ বিরতি আবেদন। আপনাকে কোডে এটি ঠিক করতে হবে:

private void setStyleForTextForAutoComplete(int color) {
    Drawable wrappedDrawable =     DrawableCompat.wrap(autoCompleteTextView.getBackground());
    DrawableCompat.setTint(wrappedDrawable, color);
    autoCompleteTextView.setBackgroundDrawable(wrappedDrawable);
}

এবং ইন Activity.onCreate:

setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
    if(hasFocus) {
        setStyleForTextForAutoComplete(getResources().getColor(R.color.blue));
    } else {
        if(autoCompleteTextView.getText().length() == 0) {  
              setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
        }
    }
});

8

আপনি পরিবর্তন করতে চান বার / লাইন রঙ এবং ইঙ্গিতটি পাঠ্যের রঙ এর TextInputLayout(কি অ্যাকসেন্ট রঙ সাধারণত হয়), তারপর শুধু এই শৈলী তৈরি করুন:

<style name="MyStyle">
    <item name="colorAccent">@color/your_color</item>
</style>

তারপরে এটি আপনার থিমTextInputLayout হিসাবে প্রয়োগ করুন :

<android.support.design.widget.TextInputLayout
    ...
    app:theme="@style/MyStyle" />

এটি মূলত একটি দৃশ্যে একটি থিম (স্টাইল নয়) সেট করে (পুরো ক্রিয়াকলাপের বিপরীতে)।


আপনার ন্যূনতম এসডিকে 21 হওয়া উচিত
আজিজজোন খোলাটোভ

5
<style name="Widget.Design.TextInputLayout" parent="android:Widget">
    <item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item>
    <item name="errorTextAppearance">@style/TextAppearance.Design.Error</item>
</style>

বিন্যাসের জন্য আপনি এই স্টাইলটিকে ওভাররাইড করতে পারেন

এবং আপনি অভ্যন্তর সম্পাদনা-আইটেমের স্টাইলও পরিবর্তন করতে পারেন।


এই স্টাইলটি কীভাবে ব্যবহার করবেন? এক জায়গায় সমস্ত অ্যাপ্লিকেশন শৈলী ওভাররাইড করার কোন উপায় আছে?
হানজালা

5
<style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorControlNormal">@color/actionBar_background</item>
    <item name="colorControlActivated">@color/actionBar_background</item>
    <item name="colorControlHighlight">@color/actionBar_background</item>
    <item name="colorAccent">@color/actionBar_background</item>
    <item name="android:textColorHint">@color/actionBar_background</item>
</style>

এই স্টাইলটি টেক্সটইনপুটলয়েটে প্রয়োগ করুন apply


2
শৈলীটি পাঠ্য ইনপুট লেআউটটিতে প্রয়োগ করার জন্য কেবলমাত্র একটি দ্রুত নোট:android:theme="@style/EditScreenTextInputLayoutStyle"
জ্যাকাইকফ্লাউ

5

TextinputLayoutকোনও দৃশ্য নয়, তবে এটি তাঁর ব্লগ পোস্টে দিমিত্রিওস সিগুরিসLayout খুব সুন্দরভাবে বর্ণনা করেছেন । অতএব, আপনার এমন কোনও প্রয়োজন নেই যা কেবলমাত্র, তবে একটি ব্যবহার করুন । ব্লগ পোস্ট অনুসরণ করে, আমি নিম্নলিখিত সমাধান দিয়ে শেষ করেছি:StyleViewsTheme

আপনার styles.xmlসাথে শুরু করুন

<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
        <!-- reference our hint & error styles -->
        <item name="android:textColor">@color/your_colour_here</item>
        <item name="android:textColorHint">@color/your_colour_here</item>
        <item name="colorControlNormal">@color/your_colour_here</item>
        <item name="colorControlActivated">@color/your_colour_here</item>
        <item name="colorControlHighlight">@color/your_colour_here</item>
</style>

এবং আপনার বিন্যাসে অ্যাড

<com.google.android.material.textfield.TextInputLayout
                android:theme="@style/TextInputLayoutAppearance"
...

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