অ্যাপকম্প্যাট ভি 7 সহ সম্পাদনা পাঠ্য নীচের লাইনের রঙ পরিবর্তন করা হচ্ছে


310

অ্যান্ড্রয়েড 5 এবং তার চেয়ে কম সংক্ষিপ্ত চেহারাটি পেতে আমি অ্যাপকম্প্যাট ভি 7 ব্যবহার করছি। এটি বরং ভাল কাজ করে। তবে আমি কীভাবে নীচের লাইনের রঙ এবং এডিটেক্সটসের জন্য অ্যাকসেন্ট রঙটি পরিবর্তন করব তা বুঝতে পারি না। এটা কি সম্ভব?

আমি একটি কাস্টম android:editTextStyle(নীচে সিএফ) সংজ্ঞায়িত করার চেষ্টা করেছি তবে আমি কেবল পুরো পটভূমির রঙ বা পাঠ্যের রঙ পরিবর্তন করতে পেরেছি তবে নীচের লাইনটি বা অ্যাকসেন্টের রঙটি নয়। ব্যবহারের জন্য কোনও নির্দিষ্ট সম্পত্তি মান আছে? android:backgroundসম্পত্তিটির মাধ্যমে কি আমাকে কাস্টম আঁকতে সক্ষম চিত্র ব্যবহার করতে হবে ? হেক্সায় কোনও রঙ নির্দিষ্ট করা কি সম্ভব নয়?

 <style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
     <item name="android:editTextStyle">@style/Widget.App.EditText</item>
 </style>

 <style name="Widget.App.EditText" parent="Widget.AppCompat.EditText">
     ???
 </style>

অ্যান্ড্রয়েড এপিআই 21 উত্স অনুসারে, উপাদান নকশার সাথে সম্পাদনা সম্পাদনাগুলি ব্যবহার করে বলে মনে হচ্ছে colorControlActivatedএবং colorControlNormal। অতএব, আমি পূর্ববর্তী শৈলীর সংজ্ঞায় এই বৈশিষ্ট্যগুলিকে ওভাররাইড করার চেষ্টা করেছি তবে এর কোনও প্রভাব নেই। সম্ভবত অ্যাপকম্প্যাট এটি ব্যবহার করে না। দুর্ভাগ্যক্রমে, আমি উপাদান নকশা সহ অ্যাপকম্প্যাটের শেষ সংস্করণটির উত্সগুলি খুঁজে পাচ্ছি না।


সম্পাদনা পাঠ্যের জন্য আপনার থিমটি সংজ্ঞায়িত করুন
মিনাল

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

এই উত্তরগুলির কোনোটাই আমার জন্য 4.3-তে কাজ করছে না। আপনার কি কোনও কাজের সমাধান আছে?
রবার্ট বেকার

AppCompatEditTextস্পষ্টতই আমাকে প্রসারিত করতে হয়েছিল ।
এপিকপান্ডাফোরস

উত্তর:


479

অবশেষে, আমি একটি সমাধান খুঁজে পেয়েছি। এটা শুধু জন্য মান অগ্রাহ্য নিয়ে গঠিত colorControlActivated, colorControlHighlightএবং colorControlNormalআপনার editText শৈলী আপনার অ্যাপ থিম সংজ্ঞা এবং। তারপরে, আপনি যে কার্যকলাপ চান তা এই থিমটি ব্যবহার করার কথা ভাবুন। নীচে একটি উদাহরণ দেওয়া হল:

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">@color/accent</item>
    <item name="colorControlHighlight">@color/accent</item>
</style>

9
আমি মেনুটির হ্যামবার্গার, পিছনের বোতাম এবং স্ক্রোল বারের রঙটি পরিবর্তন করে কন্ট্রোলঅনরমাল করে দেখছি।
আরিও

11
এটি নীচের লাইনের রঙ পরিবর্তন করে তবে এটি চেক বাক্স, রেডিও বোতাম ইত্যাদির মতো প্রতিটি অন্যান্য নিয়ন্ত্রণও পরিবর্তন করে এটি পুরো প্রয়োগ / ক্রিয়াকলাপের প্রতিটি সম্পাদনা পাঠ্যকেও পরিবর্তন করে। আপনি যদি একটি একক সম্পাদনা পাঠের নীচের লাইনটি পরিবর্তন করতে চান (যেমন আমি করি) তবে আপনাকে সেই সম্পাদনা পাঠের জন্য অ্যান্ড্রয়েড: পটভূমি সম্পত্তি ওভাররাইড করতে হবে। এএফআইকে ছাড়া আর কোনও উপায় নেই।
ইমানুয়েল মোইকলিন

68
আপনি AppCompat v22 সমর্থন গ্রন্থাগার ব্যবহার করে থাকেন, আপনার মত editText মধ্যে থিম নির্দিষ্ট করতে পারেন: android:theme="@style/Theme.App.Base। এটি নিশ্চিত করবে যে শৈলীটি আপনার লেআউটগুলিতে থাকা অন্যান্য দর্শনগুলিকেও প্রভাব ফেলবে না যা আপনি পরিবর্তন করতে চান না।
অ্যালেক্স লকউড

8
জেলি বিন (৪.২) তে কাজ করেননি তবে ললিপপ
মঙ্গেশ

3
ক্রিয়াকলাপ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া উচিত AppCompatActivity। এটি উত্তরাধিকার সূত্রে পেলে তা কার্যকর হবে না Activity
ভরথাওয়াজ

187

আমি অনুভব করেছি যে এর উত্তরটির প্রয়োজন যদি কেউ কেবল একটি মাত্র সম্পাদনা পরিবর্তন করতে চায়। আমি এটি এইভাবে করি:

editText.getBackground().mutate().setColorFilter(ContextCompat.getColor(context, R.color.your_color), PorterDuff.Mode.SRC_ATOP);

1
তবে আমি কীভাবে ডিফল্ট পটভূমিতে পুনরায় সেট করতে পারি, ললিপপ এডিটেক্সট.বেটব্যাকগ্রাউন্ড () রিসেটকালারফিল্টার () কল করার পরে আমি প্রচুর বাগ পেয়েছি?
অতিপ্রাকৃত

সতর্ক করা! এটি যুক্ত করার ফলে সমস্ত অ্যাপ্লিকেশন জুড়ে এডিটেক্সটের রঙ পরিবর্তন হতে পারে। Nexus 5. OS 6.0.1 এ পরীক্ষিত।
অ্যালেক্স পেরেভোজচাইকভ

1
পছন্দ করুন .GetBackground () এর পরে .mutate () যুক্ত করার চেষ্টা করুন। যা করা উচিৎ.
hordurh

@ হর্ডুর হ্যাঁ, এটি হ'ল, আমি এই পরামর্শটি একটু আগে পেয়েছি, ড্রয়েবলরা একটি পুল ভাগ করে নেওয়ার আগে পরিবর্তনের আগে আমাদের এটিকে পরিবর্তন করতে হবে
অ্যালেক্স পেরোভজচেকভ

1
আমি যদি এডিটেক্সট ব্যবহার করি তবে এটি কাজ তবে এই পদ্ধতিটি ললিপপে অ্যাপ কমপ্যাট সম্পাদনাটির সাথে কাজ করে না। আপনি কি জানেন যে আমি কীভাবে সমস্যাটি সমাধান করতে পারি?
সেলিন

145

যদিও Laurents সমাধান সঠিক, এটি কিছু অপূর্ণতা না শুধুমাত্র নীচে লাইন থেকে মন্তব্য বর্ণনা অনুযায়ী দিয়ে আসে EditTextসাদার সহিত মিশ্রিত পরার কিন্তু ব্যাক বোতাম Toolbar, CheckBoxesইত্যাদি হিসাবে ভাল।

সৌভাগ্য যে v22.1এর appcompat-v7কিছু নতুন সম্ভাবনার পরিচয় করিয়ে দেন। এখন কেবলমাত্র একটি দৃশ্যে একটি নির্দিষ্ট থিম বরাদ্দ করা সম্ভব। সোজা চেঞ্জলগ থেকে :

অ্যাপ্লিকেশনটির অবচিত ব্যবহার: স্টাইলিং সরঞ্জামদণ্ডের জন্য থিম। আপনি এখন এন্ড্রয়েড: থিম সমস্ত এপিআই স্তরের 7 এবং উচ্চতর ডিভাইস এবং অ্যান্ড্রয়েডের টুলবারগুলির জন্য ব্যবহার করতে পারেন : API স্তরের 11 এবং উচ্চতর ডিভাইসে সমস্ত উইজেটের জন্য থিম সমর্থন support

সুতরাং গ্লোবাল থিমে কাঙ্ক্ষিত রঙটি সেট করার পরিবর্তে আমরা একটি নতুন তৈরি করি এবং কেবলমাত্র এটিতে নির্ধারিত করি EditText

উদাহরণ:

<style name="MyEditTextTheme">
    <!-- Used for the bottom line when not selected / focused -->
    <item name="colorControlNormal">#9e9e9e</item>
    <!-- colorControlActivated & colorControlHighlight use the colorAccent color by default -->
</style>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/MyEditTextTheme"/>

1
আমি এটি প্রয়োজনীয় মনে করি না। colorControlNormalঅ্যান্ড্রয়েড প্রিফিক্স ব্যতীত উইজেটগুলিকে রঙিন করার জন্য অ্যাপকম্প্যাট পদ্ধতি ব্যবহার করে যখন উপসর্গের সাথে এটি সিস্টেম পদ্ধতিতে পড়ে এবং এটি কেবলমাত্র 21+ ডিভাইসগুলিতে উপলব্ধ is

হুম, আমি আমার ললিপপ ডিভাইসে পরীক্ষা করেছি এবং আপনি অ্যান্ড্রয়েড নেমস্পেসের সাথে ভি 21 শৈলীতে এটি প্রয়োগ না করলে এটি কাস্টম রঙে রঙিন হবে না।
ব্যবহারকারী 2968401

আমি 22.2.0অ্যাপকম্প্যাট সংস্করণ ব্যবহার করছি তবে এই কৌশলটি কাজ করছে না :(
শজিল আফজাল

1
<আইটেম নাম = "colorAccent"> # 000000 </item> ব্যবহার করে colorControlNormal এর পরিবর্তে আমার পক্ষে কাজ করেছে।
মাইকঅকার ইকো

অ্যাপ্লিকেশনটিতে কেবল একটি সম্পাদনা পাঠ্য পরিবর্তন করতে পারফেক্ট! (ঠিক আমার কী প্রয়োজন! ধন্যবাদ)
রোমেন বার্বিয়ার

99

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

রেফারেন্স এপিআই> = 21 সামঞ্জস্যের ব্যবহারের জন্য:

android:backgroundTint="@color/blue"

পশ্চাদপদ API <21 সামঞ্জস্যের ব্যবহারের জন্য:

app:backgroundTint="@color/blue"

10
হ্যাঁ, তবে এটি কেবলমাত্র অ্যান্ড্রয়েড এপিআই সংস্করণ 21+ (কিটক্যাট এবং ললিপপ) এর জন্য কাজ করে। একটি সম্ভবত একটি পশ্চাদপটে সামঞ্জস্যপূর্ণ সমাধান তৈরি করার চেষ্টা করবে।
দামাচক

12
পশ্চাদপটে সামঞ্জস্যপূর্ণ সহায়তার backgroundTint="@color/blue"পরিবর্তে কেবল ব্যবহার করুনandroid:backgroundTint="@color/blue"
কিশান বাঘেলা 31:58

11
@ কিশনবাঘেলা, প্রি-ললিপপ ডিভাইসগুলি সমর্থন করার জন্য android:backgroundTint="@color/blue"ব্যবহার app:backgroundTint="@color/blue"করার পরিবর্তে, আপনার মন্তব্যের জন্য ধন্যবাদ!
ব্লুওয়্যার

2
@ ব্লুওয়্যার যদি আপনি এটি স্টাইলে ব্যবহার করতে চান তবে আমাদের "অ্যাপ" ব্যবহারের দরকার নেই।
কিশান বাঘেলা

tools:ignore="MissingPrefix"যদি কোনও লাল আন্ডারলাইন পপ অন্তর্ভুক্ত করে যোগ করুনapp:backgroundTint="<your color>"
মূসা অ্যাপ্রিকো

47

উপরে << 21 এবং তারপরের জন্য সমাধান এখানে

Drawable drawable = yourEditText.getBackground(); // get current EditText drawable 
drawable.setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_ATOP); // change the drawable color

if(Build.VERSION.SDK_INT > 16) {
    yourEditText.setBackground(drawable); // set the new drawable to EditText
}else{
    yourEditText.setBackgroundDrawable(drawable); // use setBackgroundDrawable because setBackground required API 16
}

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

আশা করি এটি সাহায্য করবে


দেরিতে সাড়া দেওয়ার জন্য @ কুলমাইন্ড দুঃখিত। আমি এই কোড সমর্থন লাইব্রেরিতে আবার চেক আছে 24.2.1, 25.1.1, 25.2.0ডিভাইস <21 এবং> 21 এবং এটি এখনো কাজ। দয়া করে এই সাধারণ ডেমো drive.google.com/file/d/0B_poNaia6t8kSzU3bDFVazRSSDA/… দেখুন । আমি জানি না কেন এই কোডটি আপনার পক্ষে কাজ করে না তাই দয়া করে আমাকে জানান। আপনাকে ধন্যবাদ
ফান ভ্যান লিনহ

@ দেরী সাড়া পাওয়ার জন্য রেনজিথ দুঃখিত, দয়া করে উপরে আমার মন্তব্যটি দেখুন
ফান ভ্যান লিনহ

আপনি এই কোডটি দিয়ে কীভাবে রঙটিকে ডিফল্টতে পুনরায় সেট করবেন?
নেফ

35

স্বীকৃত উত্তরটি স্টাইল ভিত্তিক জিনিসটির তুলনায় কিছুটা বেশি, তবে সবচেয়ে কার্যকর কাজটি হ'ল আপনার অ্যাপ থিম শৈলীতে এর মত রঙআসেন্ট বৈশিষ্ট্য যুক্ত করা:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:editTextStyle">@style/EditTextStyle</item>
</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>

কালারঅ্যাসেন্ট অ্যাট্রিবিউটটি অ্যাপ্লিকেশন জুড়ে উইজেট টিংটিংয়ের জন্য ব্যবহৃত হয় এবং এটি ধারাবাহিকতার জন্য ব্যবহার করা উচিত


8
@ টমাস এটি এআইপি 21-র পুনরুদ্ধার করতে পারে না কারণ মূল থিম অ্যাপকম্প্যাট যা এপিআই 7 তে নেমে যায়
তন্ময়পি

Ughhh। এর জন্য ধন্যবাদ, আমি name="android:colorAccent"ভুলভাবে ব্যবহার করছিলাম
জুলাই

29

আপনি যদি appcompat-v7:22.1.0+ব্যবহার করেন তবে আপনার উইজেটগুলি রঙিন করতে ড্রয়যোগ্যকম্যাট ব্যবহার করতে পারেন

    public static void tintWidget(View view, int color) {
        Drawable wrappedDrawable = DrawableCompat.wrap(view.getBackground());
        DrawableCompat.setTint(wrappedDrawable.mutate(), getResources().getColor(color));
        view.setBackgroundDrawable(wrappedDrawable);
    }

এটি কী
জীবনকালীন

দয়া করে নীচে যান এবং ডিজাইন লাইব্রেরির জন্য আমার উত্তর দেখুন 23.2.0। এই পদ্ধতিটি এখনই অকেজো।
ywwynm

21

ব্যবহার করুন:

<EditText
    app:backgroundTint="@color/blue"/>

এটি প্রি-ললিপপ ডিভাইসগুলি কেবলমাত্র +21 নয় support


@ পাউডার366, আপনি কি আপনার অ্যাপ্লিকেশনটির মূল থিম পোস্ট করতে পারেন?
ব্লুওয়্যার

1
<শৈলীর নাম = "অ্যাপপ্লেম" প্যারেন্ট = "থিম.অ্যাপকম্প্যাট.লাইট.ডর্ক অ্যাকশনবার">
গুঁড়া

2
@ পাউডার366, এটি চেষ্টা করুন: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">এবং এটির কাজ করা উচিত
ব্লুওয়্যার

19

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

    <item name="colorControlNormal">@color/colorAccent</item>
    <item name="colorControlActivated">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/colorAccent</item>

</style>


এটি কাজ করে! প্রশ্নটি জিজ্ঞাসা করার সাথে সাথে এটি স্টাইল / থিমের মধ্যে সমাধান হওয়া উচিত, এটি সঠিক উত্তর হওয়া উচিত।
নিনজা

আমি রাজী. এটি সঠিক উত্তর হওয়া উচিত কারণ এটি বিশ্বব্যাপী সমাধান
সান্তাচরব

বিভিন্ন নিয়ন্ত্রণের বিভিন্ন বর্ণের প্রয়োজন হলে এটি অসুবিধে হয়।
জুলিয়াস

12

আপনার সমস্যার একটি দ্রুত সমাধান হ'ল ইউর্যাপস্প্যাকেজ / বিল্ড / ইন্টারমিডিয়েটস / বিস্ফোরিত -আর / com.android.support / appcompat-v7 / res / অঙ্কনযোগ্য / abc_edit_text_matory.xml এর জন্য এবং সেই এক্সএমএল ফাইলটি আপনার ছবি আঁকার ফোল্ডারে অনুলিপি করা। তারপরে আপনি এই নির্বাচকটির ভিতরে থেকে 9 টি প্যাচ ফাইলের রঙ পরিবর্তন করতে পারেন, আপনার পছন্দগুলি মেলে।


9

এটি খুব সহজেই android:backgroundTintআপনার এট্রিবিউট যুক্ত করুন EditText

android:backgroundTint="@color/blue"
android:backgroundTint="#ffffff"
android:backgroundTint="@color/red"


 <EditText
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:backgroundTint="#ffffff"/>

2
ব্যাকগ্রাউন্ড টিন্ট এপিআই লেভ 21 এর উপরে
আশ্বিন এইচ

ViewCompat.setBackgroundTintList (editText, colorStateList.valueOf (color.YELLOW))
আর্স্ট

1
app:backgroundTint="@color/blue"সমস্ত এপিআই স্তরে কাজ করে .. যদিও যে কোনও কারণেই এটি এক্সডি বাছাই করার সময় এটি এখনও একটি অন্য রঙের দিকে
ফিরছে

8

এখানে TextInputLayoutসমর্থন ডিজাইন লাইব্রেরির উত্স কোডের একটি অংশ রয়েছে ( ২৩.২.০ সংস্করণে আপডেট করা ), যা EditTextনীচের লাইনের রঙকে সহজ উপায়ে পরিবর্তন করে:

private void updateEditTextBackground() {
    ensureBackgroundDrawableStateWorkaround();

    final Drawable editTextBackground = mEditText.getBackground();
    if (editTextBackground == null) {
        return;
    }

    if (mErrorShown && mErrorView != null) {
        // Set a color filter of the error color
        editTextBackground.setColorFilter(
                AppCompatDrawableManager.getPorterDuffColorFilter(
                        mErrorView.getCurrentTextColor(), PorterDuff.Mode.SRC_IN));
    }
    ...
}

দেখে মনে হচ্ছে আপনি যদি প্রোগ্রামক্রমে রঙ পরিবর্তন করতে চান তবে উপরের সমস্ত কোড এখনই 23.2.0 এ অকেজো হয়ে গেছে।

এবং আপনি যদি সমস্ত প্ল্যাটফর্ম সমর্থন করতে চান তবে আমার পদ্ধতিটি এখানে:

/**
 * Set backgroundTint to {@link View} across all targeting platform level.
 * @param view the {@link View} to tint.
 * @param color color used to tint.
 */
public static void tintView(View view, int color) {
    final Drawable d = view.getBackground();
    final Drawable nd = d.getConstantState().newDrawable();
    nd.setColorFilter(AppCompatDrawableManager.getPorterDuffColorFilter(
            color, PorterDuff.Mode.SRC_IN));
    view.setBackground(nd);
}

অ্যাপকম্প্যাটড্রেবয়েবল ম্যানেজার কী? সেটব্যাকগ্রাউন্ডের জন্য এপিআই 16 দরকার
কুলমাইন্ড

8

আমিও এই সমস্যায় বেশি দিন আটকে ছিলাম।

আমার কাছে এমন একটি সমাধান দরকার যা v21 এর উপরে এবং নীচে উভয় সংস্করণের জন্য কাজ করেছিল।

আমি অবশেষে একটি খুব সাধারণ সম্ভবত আদর্শ নয় তবে কার্যকর সমাধানটি আবিষ্কার করেছি: কেবল ব্যাকগ্রাউন্ডের রঙটি transparentএডিটেক্সট বৈশিষ্ট্যে সেট করুন ।

<EditText
    android:background="@android:color/transparent"/>

আমি আশা করি এটি কারও কিছুটা সময় সাশ্রয় করেছে।


1
এটি পুরো পটভূমির রঙ পরিবর্তন করছে এবং আমরা কেবল আন্ডারলাইন রঙ পরিবর্তন করতে চাই।
শাহজাইন আলি

@ শাহজাইন আলি সম্পাদনা পাঠ্যের আন্ডারলাইন একটি পটভূমি। যদি আপনি এটি বাতিল করেন তবে এটি চলে গেছে। এবং ব্যাকগ্রাউন্ড
টিন্ট

7

আমার জন্য আমি অ্যাপপ্লেম এবং একটি মান রঙগুলি উভয়ই সংশোধন করেছি x পাশাপাশি কার্সার এবং "|" যখন একটি সম্পাদনা পাঠের ভিতরে থাকে।

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorControlNormal">@color/yellow</item>
    <item name="colorAccent">@color/yellow</item>
</style>

এখানে color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="yellow">#B7EC2A</color>
</resources>

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


2
এটি উত্তর হওয়া উচিত
মিনা সামি

কবজির মতো কাজ করেছেন। ধন্যবাদ
দিশ শর্মা

6

এটি অর্জনের জন্য আপনি বাম, ডান এবং উপরের দিকে বিয়োগ প্যাডিং সহ একটি আয়তক্ষেত্রে এডিটেক্সটের ব্যাকগ্রাউন্ড সেট করতে পারেন। এখানে এক্সএমএল উদাহরণ রয়েছে:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="-1dp"
        android:left="-1dp"
        android:right="-1dp"
        android:bottom="1dp"
        >
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#6A9A3A"/>
        </shape>
    </item>
</layer-list>

যদি আপনি ফোকাসযুক্ত সম্পাদনাটির জন্য বিভিন্ন প্রস্থ এবং রঙ সরবরাহ করতে চান তবে কোনও নির্বাচকের সাথে আকারটি প্রতিস্থাপন করুন।


5

অ্যাক্টিভিট.এক্সএমএলে কোড যুক্ত করুন

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/editText"
        android:hint="Informe o usuário"
        android:backgroundTint="@android:color/transparent"/>

যেখানে BackgroundTint=colorআপনার পছন্দসই রঙের জন্য


5

আমি এই পদ্ধতিটি পোর্টারডাফের সাথে অন্য কোনও অঙ্কনযোগ্য ছাড়াই লাইনের রঙ পরিবর্তন করতে ব্যবহার করি।

public void changeBottomColorSearchView(int color) {
    int searchPlateId = mSearchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
    View searchPlate = mSearchView.findViewById(searchPlateId);
    searchPlate.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
}

কোনও সাধারণ সম্পাদনা পাঠের নীচের লাইনটি অ্যাক্সেস করার জন্য কি একই জাতীয় সনাক্তকারী উপস্থিত রয়েছে?
রুমি পি

4

আপনি যদি অ্যাপ্লিকেশন রঙ ব্যবহার না করে নীচের লাইনটি পরিবর্তন করতে চান তবে আপনার থিমটিতে এই লাইনগুলি ব্যবহার করুন:

<item name="android:editTextStyle">@android:style/Widget.EditText</item>
<item name="editTextStyle">@android:style/Widget.EditText</item>

আমি আর একটি সমাধান জানি না।


4

আমি 2 দিন সংগ্রামের পরে এই সমস্যার একটি সমাধান সমাধান কাজ করেছি, নীচের সমাধানটি তাদের জন্য উপযুক্ত যারা কেবলমাত্র কয়েকটি সম্পাদনা পাঠ পরিবর্তন করতে চান, জাভা কোডের মাধ্যমে রঙ পরিবর্তন / টগল করতে চান এবং ওএস সংস্করণে বিভিন্ন আচরণের সমস্যাগুলি কাটিয়ে উঠতে চান সেট কালারফিল্টার () পদ্ধতি ব্যবহারের কারণে।

    import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.AppCompatDrawableManager;
import android.support.v7.widget.AppCompatEditText;
import android.util.AttributeSet;
import com.newco.cooltv.R;

public class RqubeErrorEditText extends AppCompatEditText {

  private int errorUnderlineColor;
  private boolean isErrorStateEnabled;
  private boolean mHasReconstructedEditTextBackground;

  public RqubeErrorEditText(Context context) {
    super(context);
    initColors();
  }

  public RqubeErrorEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    initColors();
  }

  public RqubeErrorEditText(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    initColors();
  }

  private void initColors() {
    errorUnderlineColor = R.color.et_error_color_rule;

  }

  public void setErrorColor() {
    ensureBackgroundDrawableStateWorkaround();
    getBackground().setColorFilter(AppCompatDrawableManager.getPorterDuffColorFilter(
        ContextCompat.getColor(getContext(), errorUnderlineColor), PorterDuff.Mode.SRC_IN));
  }

  private void ensureBackgroundDrawableStateWorkaround() {
    final Drawable bg = getBackground();
    if (bg == null) {
      return;
    }
    if (!mHasReconstructedEditTextBackground) {
      // This is gross. There is an issue in the platform which affects container Drawables
      // where the first drawable retrieved from resources will propogate any changes
      // (like color filter) to all instances from the cache. We'll try to workaround it...
      final Drawable newBg = bg.getConstantState().newDrawable();
      //if (bg instanceof DrawableContainer) {
      //  // If we have a Drawable container, we can try and set it's constant state via
      //  // reflection from the new Drawable
      //  mHasReconstructedEditTextBackground =
      //      DrawableUtils.setContainerConstantState(
      //          (DrawableContainer) bg, newBg.getConstantState());
      //}
      if (!mHasReconstructedEditTextBackground) {
        // If we reach here then we just need to set a brand new instance of the Drawable
        // as the background. This has the unfortunate side-effect of wiping out any
        // user set padding, but I'd hope that use of custom padding on an EditText
        // is limited.
        setBackgroundDrawable(newBg);
        mHasReconstructedEditTextBackground = true;
      }
    }
  }

  public boolean isErrorStateEnabled() {
    return isErrorStateEnabled;
  }

  public void setErrorState(boolean isErrorStateEnabled) {
    this.isErrorStateEnabled = isErrorStateEnabled;
    if (isErrorStateEnabled) {
      setErrorColor();
      invalidate();
    } else {
      getBackground().mutate().clearColorFilter();
      invalidate();
    }
  }
}

এক্সএমএল ব্যবহার করে

<com.rqube.ui.widget.RqubeErrorEditText
            android:id="@+id/f_signup_et_referral_code"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/referral_iv"
            android:layout_toRightOf="@+id/referral_iv"
            android:ems="10"
            android:hint="@string/lbl_referral_code"
            android:imeOptions="actionNext"
            android:inputType="textEmailAddress"
            android:textSize="@dimen/text_size_sp_16"
            android:theme="@style/EditTextStyle"/>

শৈলীতে লাইন যুক্ত করুন

<style name="EditTextStyle" parent="android:Widget.EditText">
    <item name="android:textColor">@color/txt_color_change</item>
    <item name="android:textColorHint">@color/et_default_color_text</item>
    <item name="colorControlNormal">@color/et_default_color_rule</item>
    <item name="colorControlActivated">@color/et_engagged_color_rule</item>
  </style>

জাভা কোড টগল রঙ করতে

myRqubeEditText.setErrorState(true);
myRqubeEditText.setErrorState(false);

2

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

অবশেষে আমি বুঝতে পারলাম কি চলছে। android.widget.EditTextএকটি নতুন উদাহরণ তৈরি করার সময় আমি (ভুলভাবে) ব্যবহার করছিলাম (তবে আমার বাকী অংশগুলি অ্যাপকম্প্যাট লাইব্রেরি থেকে ছিল)। আমার ব্যবহার করা উচিত ছিল android.support.v7.widget.AppCompatEditText। আমি এর সাথে প্রতিস্থাপন new EditText(this)করেছি new AppCompatEditText(this) এবং সমস্যাটি তাত্ক্ষণিকভাবে সমাধান হয়ে গেছে। দেখা যাচ্ছে, আপনি যদি সত্যই ব্যবহার করছেন তবে AppCompatEditTextএটি কেবল accentColorআপনার থিমের প্রতি সম্মান জানাবে (উপরের কয়েকটি মন্তব্যে উল্লিখিত) এবং কোনও অতিরিক্ত কনফিগারেশন প্রয়োজন নেই।


2

এটি সবথেকে সহজ এবং সর্বাধিক দক্ষ / পুনরায় ব্যবহারযোগ্য / সমস্ত
এপিআইতে কাজ করে এমন একটি কাস্টম সম্পাদনা পাঠ্য শ্রেণি তৈরি করুন:

public class EditText extends android.widget.EditText {
    public EditText(Context context) {
        super(context);
        init();
    }

    public EditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public EditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        getBackground().mutate().setColorFilter(ContextCompat.getColor(getContext(), R.color.colorAccent), PorterDuff.Mode.SRC_ATOP);
    }
}

তারপরে এটি ব্যবহার করুন:

 <company.com.app.EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"/>

2

এডিটেক্সট ব্যাকগ্রাউন্ডকে গতিশীল পরিবর্তন করতে আপনি কালারস্টেটলিস্ট ব্যবহার করতে পারেন ।

int[][] states = new int[][] {
    new int[] { android.R.attr.state_enabled}, // enabled
    new int[] {-android.R.attr.state_enabled}, // disabled
    new int[] {-android.R.attr.state_checked}, // unchecked
    new int[] { android.R.attr.state_pressed}  // pressed
};

int[] colors = new int[] {
    Color.BLACK,
    Color.RED,
    Color.GREEN,
    Color.BLUE
};

ColorStateList colorStateList = new ColorStateList(states, colors);

ক্রেডিট: কালারস্টেটলিস্ট সম্পর্কে এই উত্তরটি দুর্দান্ত


এবং কোন পদ্ধতিটি ব্যবহার করবেন? setBackgroundTintList? এটা তোলে এপিআই 21. প্রয়োজন
CoolMind

পুরানো এপিআই ভার্সনগুলির জন্য সেটসপোর্টব্যাকগ্রাউন্ডটিন্টলিস্ট।
অঙ্কিত পপলি

0

যোগ app:backgroundTintনীচের API স্তর 21. অন্যথায় ব্যবহার android:backgroundTint

এপিআই স্তরের নীচে 21।

<EditText
     android:id="@+id/edt_name"
     android:layout_width="300dp"
     android:layout_height="wrap_content"
     android:textColor="#0012ff"
     app:backgroundTint="#0012ff"/>

এপিআই স্তরের চেয়ে বেশি 21।

<EditText
     android:id="@+id/edt_name"
     android:layout_width="300dp"
     android:layout_height="wrap_content"
     android:textColor="#0012ff"
     android:backgroundTint="#0012ff"/>

-2

আপনার প্রয়োজন অনুসারে এই পদ্ধতিটি পরিবর্তন করুন। এটি আমার পক্ষে কাজ করেছিল!

  private boolean validateMobilenumber() {
        if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
            input_layout_mobilenumber.setErrorEnabled(true);
            input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
           // requestFocus(mobilenumber);
            return false;
        } else {
            input_layout_mobilenumber.setError(null);
            input_layout_mobilenumber.setErrorEnabled(false);
            mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.