আমি অ্যান্ড্রয়েড ডিজাইনের লাইব্রেরি ব্যবহার করছি TextinputLayout
। তবে ইঙ্গিত রঙ, লেবেল রঙ এবং EditText
অভ্যন্তরের আন্ডারলাইন রঙ কাস্টমাইজ করতে পারেনি TextinputLayout
। সাহায্য করুন.
আমি অ্যান্ড্রয়েড ডিজাইনের লাইব্রেরি ব্যবহার করছি TextinputLayout
। তবে ইঙ্গিত রঙ, লেবেল রঙ এবং EditText
অভ্যন্তরের আন্ডারলাইন রঙ কাস্টমাইজ করতে পারেনি TextinputLayout
। সাহায্য করুন.
উত্তর:
<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">
@ অ্যালবএটিএনএফকে ধন্যবাদ
android:textColorHint
করা TextInputLayout
থাকে।
ফেডার কাজাকভ এবং অন্যদের উত্তরগুলির ভিত্তিতে , আমি একটি ডিফল্ট কনফিগার তৈরি করেছি।
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>
দৃষ্টি নিবদ্ধ:
ফোকাস ছাড়াই:
ভুল বার্তা:
সাথে উপাদান উপাদান লাইব্রেরী আপনি ব্যবহার করতে পারেন 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"
...>
boxStrokeColor
। উদাহরণস্বরূপ selector_stroke_color
বিশেষে শেষ লাইনটি:<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
এডিটেক্সট ট্যাগটিতে এই বৈশিষ্ট্যটি যুক্ত করুন এবং উপভোগ করুন:
android:backgroundTint="@color/colorWhite"
এই ব্লগ পোস্টটি বিভিন্ন স্টাইলিংয়ের দিকগুলি বর্ণনা করে 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));
}
}
});
আপনি পরিবর্তন করতে চান বার / লাইন রঙ এবং ইঙ্গিতটি পাঠ্যের রঙ এর TextInputLayout
(কি অ্যাকসেন্ট রঙ সাধারণত হয়), তারপর শুধু এই শৈলী তৈরি করুন:
<style name="MyStyle">
<item name="colorAccent">@color/your_color</item>
</style>
তারপরে এটি আপনার থিমTextInputLayout
হিসাবে প্রয়োগ করুন :
<android.support.design.widget.TextInputLayout
...
app:theme="@style/MyStyle" />
এটি মূলত একটি দৃশ্যে একটি থিম (স্টাইল নয়) সেট করে (পুরো ক্রিয়াকলাপের বিপরীতে)।
<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>
বিন্যাসের জন্য আপনি এই স্টাইলটিকে ওভাররাইড করতে পারেন
এবং আপনি অভ্যন্তর সম্পাদনা-আইটেমের স্টাইলও পরিবর্তন করতে পারেন।
<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
android:theme="@style/EditScreenTextInputLayoutStyle"
এ TextinputLayout
কোনও দৃশ্য নয়, তবে এটি তাঁর ব্লগ পোস্টে দিমিত্রিওস সিগুরিসLayout
খুব সুন্দরভাবে বর্ণনা করেছেন । অতএব, আপনার এমন কোনও প্রয়োজন নেই যা কেবলমাত্র, তবে একটি ব্যবহার করুন । ব্লগ পোস্ট অনুসরণ করে, আমি নিম্নলিখিত সমাধান দিয়ে শেষ করেছি:Style
Views
Theme
আপনার 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"
...