অ্যান্ড্রয়েডে প্রগতিবারের অগ্রগতি সূচক রঙ কীভাবে পরিবর্তন করবেন


178

আমি অনুভূমিক সেট করেছি ProgressBar

আমি অগ্রগতির রঙটি হলুদে পরিবর্তন করতে চাই।

<ProgressBar 
    android:id="@+id/progressbar" 
    android:layout_width="80dip" 
    android:layout_height="20dip"  
    android:focusable="false" 
    style="?android:attr/progressBarStyleHorizontal" />

সমস্যাটি হ'ল, বিভিন্ন ডিভাইসে অগ্রগতির রঙ আলাদা। সুতরাং, আমি এটি অগ্রগতির রঙ ঠিক করতে চাই।


উপরের উত্তরগুলি পুরো পটভূমির রঙ পরিবর্তন করে এবং এটি অবিশ্বাস্য যে এটি অগ্রগতি বারের উচ্চতাটিকে অত্যন্ত সর্বোচ্চে পরিবর্তন করে wh যা এক্সএমএল পরিবর্তন করতে অক্ষম। কেবলমাত্র অগ্রগতি বারের স্থিতি পরিবর্তন করার আরও ভাল উপায় যে 20% লাল রঙ, 50% হলুদ রঙ 70% এবং সর্বোপরি সবুজ বর্ণের সমাপ্ত হয়। আপনি এটি জাভাতে প্রোগ্রামগতভাবে করতে পারেন। আপনার অন্য কোনও সমাধান থাকলে আপনার উত্তর ভাগ করুন।
মুবাশার

উত্তর:


365

আমি আমার অ্যাপ্লিকেশনগুলির মধ্যে একটি থেকে এটি অনুলিপি করেছি, যাতে আরও কয়েকটি অতিরিক্ত বৈশিষ্ট্য রয়েছে তবে আপনার ধারণাটি দেওয়া উচিত। এটি অগ্রণী বার রয়েছে এমন লেআউটটি থেকে:

<ProgressBar
    android:id="@+id/ProgressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:indeterminate="false"
    android:maxHeight="10dip"
    android:minHeight="10dip"
    android:progress="50"
    android:progressDrawable="@drawable/greenprogress" />

তারপরে নিম্নলিখিতগুলির অনুরূপ কিছু সহ একটি নতুন অঙ্কনযোগ্য তৈরি করুন (এই ক্ষেত্রে greenprogress.xml):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:angle="270"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:startColor="#ff9d9e9d" />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:angle="270"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:startColor="#80ffd300" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:angle="270"
                    android:endColor="#008000"
                    android:startColor="#33FF33" />
            </shape>
        </clip>
    </item>

</layer-list>

আপনি প্রয়োজনীয় রঙগুলি পরিবর্তন করতে পারেন, এটি আপনাকে একটি সবুজ অগ্রগতি বার দেবে।


এবং আমি এই অ্যান্ড্রয়েডটিও সরিয়েছি: অনির্দিষ্ট = "মিথ্যা"
নিশান্ত শাহ

2
আমাকে সাহায্য করুন. আমি আপনার কোডটি অনুলিপি করে গ্রিনপ্রেগ্রেস.এক্সএমএল তৈরি করার চেষ্টা করছি তবে অ্যান্ড্রয়েড স্টুডিও 0.4.6 চিহ্ন <layer-list> হিসাবে এবং ত্রুটি হিসাবে "এলিমেট-তালিকাটি অবশ্যই ঘোষণা করতে হবে" আমার কি করা উচিত?
UmAnusorn

1
গতিশীলভাবে রঙ পরিবর্তন করা কি সম্ভব?
async

প্রকৃত বারে সংজ্ঞায়িত বর্তমান অগ্রগতির মানের উপর নির্ভর করে রঙটি পরিবর্তন করা যেতে পারে?
জোনাথন

@Ryan এটা ব্যাখ্যা করার সহায়ক হবে android:id="@android:id/progress", android:id="@android:id/background"এবং android:id="@android:id/secondaryProgress"জন্য দাঁড়ানো।
রুস্তমজি

103

একটি সহজ সমাধান:

progess_drawable_blue

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        <solid
                android:color="@color/disabled" />
    </shape>
</item>

<item
    android:id="@android:id/progress">
    <clip>
        <shape>
            <solid
                android:color="@color/blue" />
        </shape>
    </clip>
</item>

</layer-list>

1
এখানে @ রঙ / অক্ষম একটি কাস্টম রঙ
নিতিন সাক্সেনা

2
বা <শক্ত অ্যান্ড্রয়েড: রঙ = "@ অ্যান্ড্রয়েড: রঙ / কালো" />, বা এমনকি <শক্ত অ্যান্ড্রয়েড: রঙ = "# ff33b5e5" />
superarts.org

2
এটি পর্যাপ্ত অ্যান্ড্রয়েড: এন্টারপ্রাইমেটিন্টিন্ট = "@ রঙ / সাদা" এপিআই লিভারের 21 এবং
তারপরের জন্য

53

কেবল একটি স্টাইল তৈরি করুন values/styles.xml

<style name="ProgressBarStyle">
    <item name="colorAccent">@color/greenLight</item>
</style>

তারপরে এই স্টাইলটিকে আপনার ProgressBarথিম হিসাবে সেট করুন ।

<ProgressBar
    android:theme="@style/ProgressBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

এবং আপনার অগ্রগতি বারটি অনুভূমিক বা বৃত্তাকার তা বিবেচনা করে না। এখানেই শেষ.


1
বাহ, সহজ সমাধানটি আমার পক্ষে কাজ করে। আমি ভাবলাম কেন এই উত্তরে এত বেশি ভোট রয়েছে?
পাভেল শোরোখভ

38

আপনি যদি কেবলমাত্র অগ্রগতি বারের রঙটি পরিবর্তন করতে চান তবে আপনি কেবল আপনার ক্রিয়াকলাপের অনক্রিট () পদ্ধতিতে রঙিন ফিল্টার ব্যবহার করতে পারেন:

ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressbar);
int color = 0xFF00FF00;
progressbar.getIndeterminateDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
progressbar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);

থেকে আইডিয়া এখানে

আপনার কেবল প্রি-ললিপপ সংস্করণগুলির জন্য এটি করা দরকার। ললিপপটিতে আপনি রঙিন্যাসেন্ট শৈলীর বৈশিষ্ট্যটি ব্যবহার করতে পারেন।


জন্য SeekBarএটি একই, শুধু এপিআই 16 জুড়তে: seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);। এটি সেই বৃত্তাকার থাম্বের রঙ পরিবর্তন করবে।
সুফিয়ান

1
setColorFilter()সরাসরি একটি অঙ্কনীয়কে কল করা সমস্ত জায়গায় রঙ প্রয়োগ করবে। যেহেতু এই আমি কি প্রয়োজন নি, আমি শুধু নামক mutate()উপর Drawable(অর্থাত মতseekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
সুফিয়ান

3
আমি এই সমাধানটি অন্য কোথাও দেখেছি তবে এটি যা কিছু করে (জিঞ্জারব্রেড ডিভাইসে পরীক্ষা করা) পুরো অগ্রগতি বারটিকে এক রঙিন করে দেয়, এটি প্রকৃত অগ্রগতি দেখতে অসম্ভব করে তোলে
নীল সি ওব্রেমস্কি

@ নিলসি.অব্রেমস্কি হ্যাঁ আপনি ঠিক বলেছেন। এটি রম নির্দিষ্ট হতে পারে, বা সংস্করণ নির্দিষ্ট হতে পারে। আমাকে এটি পুরোপুরি সরিয়ে ফেলতে হয়েছিল। আশা করি শীঘ্রই আমরা এটিকে Android এর পুরানো সংস্করণগুলিতে ফিরিয়ে আনব (সমর্থন লিবের মাধ্যমে)।
সুফিয়ান


6

এই প্রশ্নটি সমাধানের জন্য 3 টি উপায় রয়েছে:

  1. প্রগতি বারটি বর্ণনামূলকভাবে কীভাবে সামঞ্জস্য করবেন
  2. প্রোগ্রামোগ্রাফিকভাবে কীভাবে প্রগতিবারের রঙটি সমন্বয় করা যায়, তবে সংকলন-কালার আগে ঘোষিত বিভিন্ন পূর্বনির্ধারিত রং থেকে রঙটি বেছে নিন
  3. প্রোগ্রামোগ্রাফিকভাবে প্রগতিবারের রঙটি কীভাবে সামঞ্জস্য করা যায় এবং প্রোগ্রামটিগতভাবে রঙও তৈরি করতে হয়।

বিশেষত # 2 এবং # 3 এর আশেপাশে প্রচুর বিভ্রান্তি রয়েছে, এমএফকোস্টার উত্তরের মন্তব্যে দেখা গেছে। এই উত্তরটি যে কোনও সময় আপনি প্রাথমিক রঙ ব্যতীত যে কোনও কিছুতে প্রগতি বারটি সেট করতে চাইলে অপ্রত্যাশিত রঙের ফল পাবেন, কারণ এটি কেবল ব্যাকগ্রাউন্ডের রঙকেই পরিবর্তন করে এবং প্রকৃত অগ্রগতি বার "ক্লিপ" অঞ্চলটি এখনও হ্রাস অস্বচ্ছতার সাথে একটি হলুদ রঙের ওভারলে হবে। উদাহরণস্বরূপ, গা method় বেগুনি রঙের ব্যাকগ্রাউন্ড সেট করতে সেই পদ্ধতিটি ব্যবহার করার ফলে কিছুটা ক্রেজি গোলাপী বর্ণের অগ্রগতি বার "ক্লিপ" রঙ আসবে যার ফলে গা dark় বেগুনি এবং হ্রাসিত আলফার মাধ্যমে হলুদ মিশ্রিত হবে।

যাইহোক, # 1 পুরোপুরি রায়ান দ্বারা উত্তর দিয়েছে এবং Šটার্কে উত্তর দেয় # 3 এর বেশিরভাগই, তবে যারা # 2 এবং # 3 এর সম্পূর্ণ সমাধান খুঁজছেন:


প্রোগ্রামোগ্রাফিকভাবে কীভাবে প্রগতি বারটি সমন্বয় করা যায়, তবে এক্সএমএলে ঘোষিত পূর্বনির্ধারিত রঙ থেকে রঙটি বেছে নিন choose

পুনরায় / অঙ্কনযোগ্য / my_progressbar.xML :

এই ফাইলটি তৈরি করুন তবে মাই_প্রোগ্রেস এবং মাই_সেকেন্ডপ্রোগ্রে রঙ পরিবর্তন করুন:

(দ্রষ্টব্য: এটি ডিফল্ট অ্যান্ড্রয়েড এসডিকে প্রগ্রেসবারকে সংজ্ঞায়িত করা আসল এক্সএমএল ফাইলের একটি অনুলিপি, তবে আমি আইডি এবং রঙগুলি পরিবর্তন করেছি original আসলটির নাম প্রগতি_হরিজন্টাল হয়েছে)

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/my_progress_background">
    <shape>
        <corners android:radius="5dip" />
        <gradient
            android:startColor="#ff9d9e9d"
            android:centerColor="#ff5a5d5a"
            android:centerY="0.75"
            android:endColor="#ff747674"
            android:angle="270"
            />
    </shape>
</item>

<item android:id="@+id/my_secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="#80ff171d"
                android:centerColor="#80ff1315"
                android:centerY="0.75"
                android:endColor="#a0ff0208"
                android:angle="270"
                />
        </shape>
    </clip>
</item>

<item android:id="@+id/my_progress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="#7d2afdff"
                android:centerColor="#ff2afdff"
                android:centerY="0.75"
                android:endColor="#ff22b9ba"
                android:angle="270"
                />
        </shape>
    </clip>
</item>

আপনার জাভাতে :

final Drawable drawable;
int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < 16) {
        drawable =  ctx.getResources().getDrawable(R.drawable.my_progressbar);
    } else {
        drawable = ContextCompat.getDrawable(ctx, R.drawable.my_progressbar);
    }
progressBar.setProgressDrawable(drawable)

প্রোগ্রামিগ্রেমে প্রগতিবারের রঙটি কীভাবে সামঞ্জস্য করা যায়, এবং এছাড়াও প্রোগ্রামটিমেটিকভাবে রঙ তৈরি করা যায়

সম্পাদনা: আমি এটি সঠিকভাবে সমাধান করার জন্য সময় পেয়েছি। আমার প্রাক্তন উত্তর এটিকে কিছুটা দ্বিধাবিভক্ত রেখে গেছে।

একটি প্রগতিবার একটি লেয়ারড্র্যাবেলে 3 ড্রয়যোগ্য হিসাবে তৈরি হয়।

  1. স্তর 1 পটভূমি
  2. স্তর 2 হ'ল গৌণ অগ্রগতির রঙ
  3. স্তর 3 প্রধান অগ্রগতির বার রঙ

নীচের উদাহরণে আমি প্রধান অগ্রগতির বারটিকে সায়ানে পরিবর্তন করব।

//Create new ClipDrawable to replace the old one
float pxCornerRadius = viewUtils.convertDpToPixel(5);
final float[] roundedCorners = new float[] { pxCornerRadius, pxCornerRadius, pxCornerRadius, pxCornerRadius, pxCornerRadius, pxCornerRadius, pxCornerRadius, pxCornerRadius };
ShapeDrawable shpDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null, null));
shpDrawable.getPaint().setColor(Color.CYAN);
final ClipDrawable newProgressClip = new ClipDrawable(shpDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);

//Replace the existing ClipDrawable with this new one
final LayerDrawable layers = (LayerDrawable) progressBar.getProgressDrawable();
layers.setDrawableByLayerId(R.id.my_progress, newProgressClip);

উদাহরণটি এটি একটি শক্ত রঙে সেট করে। আপনি এটি প্রতিস্থাপন করে গ্রেডিয়েন্ট রঙে সেট করতে পারেন

shpDrawable.getPaint().setColor(Color.CYAN);

সঙ্গে

Shader shader = new LinearGradient(0, 0, 0, progressBar.getHeight(), Color.WHITE, Color.BLACK, Shader.TileMode.CLAMP);
shpDrawable.getPaint().setShader(shader);

চিয়ার্স।

-Lance


ভিউ-ইউটিলেস.কনভার্টডিপিটিওপিক্সেল (5) এ ভিউ ইউটিস কী রয়েছে;
নিকোস হিডালগো

1
হাই @ নিকোসহিডালগো - আপনি প্রায় একটি অভিন্ন পদ্ধতি দেখতে পাবেন এখানে: stackoverflow.com/questions/12849366/… । পার্থক্যটি হ'ল আমি আমার ViewUtilsএকটি রেফারেন্স দিয়ে তৈরি করি Context, যাতে Contextকল করার সময় আমার কোনও পাস করার প্রয়োজন হয় নাconvertDpToPixel()
lance.dolan

আপনার প্রম্পট জবাবের জন্য আপনাকে ধন্যবাদ, বিশেষত এতদিন আগে পোস্ট করা একটি উত্তরের জন্য!
নিকোস হিডালগো


4

আপনি যদি 21 স্তরের বা ততোধিক এপিআই স্তরে থাকেন তবে আপনি এই এক্সএমএল বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

<!-- For indeterminate progress bar -->
android:indeterminateTint="@color/white"
<!-- For normal progress bar -->
android:progressTint="@color/white"

3

আমি যে সহজ সমাধানটি পেয়েছি তা হ'ল এরকম:

<item name="colorAccent">@color/white_or_any_color</item>

উপরের styles.xmlফাইলটি res > valuesফোল্ডারের নীচে রাখুন ।

দ্রষ্টব্য: আপনি যদি অন্য কোনও অ্যাকসেন্ট রঙ ব্যবহার করেন তবে পূর্বের সমাধানগুলি ভাল হওয়া উচিত।

এপিআই 21 বা উচ্চতর


এটি সেরা সমাধান। 100% জিজ্ঞাসিত প্রশ্নের সাথে সম্পর্কিত। খুব সাধারণ
পীর ফাহিম শাহ

3
final LayerDrawable layers = (LayerDrawable) progressBar.getProgressDrawable();
layers.getDrawable(2).setColorFilter(color,PorterDuff.Mode.SRC_IN);

1
আপনার উত্তরে কিছুটা ব্যাখ্যা যুক্ত করার চেষ্টা করুন। কোড শুধুমাত্র উত্তর নিরুৎসাহিত করা হয়।
আলেক্সি

আমি getDrawable ইনডেক্স 2 এর পিছনে একটি ব্যাখ্যা পেতে চাই, তবে কমপক্ষে এটিই আমার জন্য কাজ করা একমাত্র সমাধান ছিল, তাই ধন্যবাদ!
নিকোস হিডালগো

2

প্রোগ্রামের মাধ্যমে এটি কীভাবে করা যায় তার জন্য সবার জন্য:

    Drawable bckgrndDr = new ColorDrawable(Color.RED);
    Drawable secProgressDr = new ColorDrawable(Color.GRAY);
    Drawable progressDr = new ScaleDrawable(new ColorDrawable(Color.BLUE), Gravity.LEFT, 1, -1);
    LayerDrawable resultDr = new LayerDrawable(new Drawable[] { bckgrndDr, secProgressDr, progressDr });
    //setting ids is important
    resultDr.setId(0, android.R.id.background);
    resultDr.setId(1, android.R.id.secondaryProgress);
    resultDr.setId(2, android.R.id.progress);

অঙ্কনযোগ্যগুলিতে আইডির সেট করা গুরুত্বপূর্ণ, এবং সীমানা সংরক্ষণের এবং অগ্রগতির বারের প্রকৃত অবস্থার যত্ন নেয়


1

আপনারা আমাকে সত্যিই মাথা ব্যাথা দিচ্ছেন আপনি যা করতে পারেন তা হ'ল প্রথমে এক্সএমএলের মাধ্যমে আপনার স্তর-তালিকাটি অঙ্কনযোগ্য করে তোলা (যার অর্থ প্রথম স্তর হিসাবে একটি পটভূমি, দ্বিতীয় স্তর হিসাবে গৌণ অগ্রগতির প্রতিনিধিত্বকারী একটি অঙ্কনযোগ্য এবং অন্য স্তর যা প্রাথমিক স্তর হিসাবে প্রাথমিক অগ্রগতির প্রতিনিধিত্ব করে), তারপরে পরিবর্তন নিম্নলিখিতটি করে কোডের রঙটি:

public void setPrimaryProgressColor(int colorInstance) {
      if (progressBar.getProgressDrawable() instanceof LayerDrawable) {
        Log.d(mLogTag, "Drawable is a layer drawable");
        LayerDrawable layered = (LayerDrawable) progressBar.getProgressDrawable();
        Drawable circleDrawableExample = layered.getDrawable(<whichever is your index of android.R.id.progress>);
        circleDrawableExample.setColorFilter(colorInstance, PorterDuff.Mode.SRC_IN);
        progressBar.setProgressDrawable(layered);
    } else {
        Log.d(mLogTag, "Fallback in case it's not a LayerDrawable");
        progressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
}

এই পদ্ধতিটি আপনাকে এক্সটিএমএলে ঘোষণা করা আপনার মূল অঙ্কনীয় পরিমাপের সর্বোত্তম নমনীয়তা দেবে, তার কাঠামোর পরে কোনও পরিবর্তন না করে, বিশেষ করে আপনার যদি এক্সএমএল ফাইলের পর্দা ফোল্ডার নির্দিষ্ট করার দরকার হয় তবে কেবল রঙের মাধ্যমে কেবল রঙটি পরিবর্তন করুন কোড। যাইহোক স্ক্র্যাচ থেকে কোনও নতুন শেপড্র্যায়েবল পুনরায় ইনস্ট্যান্ট করছে না।


1

প্রগতিবারের বর্ণটি নীচে পরিবর্তন করা যেতে পারে:

/res/values/colors.xml

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

/res/values/styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorAccent">@color/colorAccent</item>
</style> 

onCreate:

progressBar = (ProgressBar) findViewById(R.id.progressBar);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    Drawable drawable = progressBar.getIndeterminateDrawable().mutate();
    drawable.setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.SRC_IN);
    progressBar.setIndeterminateDrawable(drawable);
}

1

আপনার কী পটভূমি দরকার তা একটি অঙ্কনযোগ্য উত্স তৈরি করুন, আমার ক্ষেত্রে আমি এর নাম রেখেছি bg_custom_progressbar.xML

<?xml version="1.0" encoding="utf-8"?>

<item>
    <shape android:shape="rectangle" >
        <corners android:radius="5dp"/>

        <gradient
            android:angle="180"
            android:endColor="#DADFD6"
            android:startColor="#AEB9A3" />
    </shape>
</item>
<item>
    <clip>
        <shape android:shape="rectangle" >
            <corners android:radius="5dp" />

            <gradient
                android:angle="180"
                android:endColor="#44CF4A"
                android:startColor="#2BB930" />
        </shape>
    </clip>
</item>
<item>
    <clip>
        <shape android:shape="rectangle" >
            <corners android:radius="5dp" />

            <gradient
                android:angle="180"
                android:endColor="#44CF4A"
                android:startColor="#2BB930" />
        </shape>
    </clip>
</item>

তারপরে এই কাস্টম ব্যাকগ্রাউন্ডটি ব্যবহার করুন

 <ProgressBar
                android:id="@+id/progressBarBarMenuHome"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:layout_marginBottom="6dp"
                android:indeterminate="false"
                android:max="100"
                android:minWidth="200dp"
                android:minHeight="50dp"
                android:progress="10"
                android:progressDrawable="@drawable/bg_custom_progressbar" />

এটা আমার জন্য কাজ করে


0

এক্সএমএলে:

<ProgressBar
                    android:id="@+id/progressBar"
                    style="?android:attr/progressBarStyleInverse"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:layout_margin="@dimen/dimen_10dp"


                 android:indeterminateTint="@{viewModel.getComplainStatusUpdate(position)}"
                    android:indeterminate="true"
                    android:indeterminateOnly="false"
                    android:max="100"
                    android:clickable="false"
                    android:indeterminateDrawable="@drawable/round_progress"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

ViewModel:

fun getComplainStatusUpdate(position: Int):Int{

                val list = myAllComplainList!!.getValue()
                if (list!!.get(position).complainStatus.equals("P")) {
                  //  progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));
                   // progressBar.setBackgroundResource(R.drawable.circle_shape)
                    return Color.RED
                } else if (list!!.get(position).complainStatus.equals("I")) {

                    return Color.GREEN
                } else {

                    return Color.GREEN
                }


return Color.CYAN
    }

0

উপাদান উপাদান লাইব্রেরিতে আপনি রঙ পরিবর্তন করতে বৈশিষ্ট্যটি ProgressIndicatorসহ ব্যবহার করতে পারেন app:indicatorColor:

  <com.google.android.material.progressindicator.ProgressIndicator
      style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"
      app:indicatorColor="@color/..."
      app:indicatorWidth="..."
      app:trackColor="@color/..."
      />

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

দ্রষ্টব্য : এটির জন্য কমপক্ষে সংস্করণ প্রয়োজন 1.3.0-alpha01

এর সাহায্যে ProgressBarআপনি রঙটি ওভাররাইড করে ব্যবহার করতে পারেন:

<ProgressBar
    android:theme="@style/CustomProgressBarTheme"
    ..>

সঙ্গে:

<style name="CustomProgressBarTheme">
    <item name="colorAccent">@color/primaryDarkColor</item>
</style>

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


0

আপনি যদি অ্যান্ড্রয়েডগুলিতে প্রোগ্রামিক্যালিভাবে অনুভূমিক অগ্রগতি বারে প্রাথমিক ও মাধ্যমিক অগ্রগতির রঙ সেট করতে চান তবে নীচে স্নিপেট ব্যবহার করুন

int[][] states = new int[][] {
                        new int[] {-android.R.attr.state_checked},
                        new int[] {android.R.attr.state_checked},
                };

                int[] secondaryColor = new int[] {
                        context.getResources().getColor(R.color.graph_line_one),
                        Color.RED,
                };

                int[] primaryColor = new int[] {
                        context.getResources().getColor(R.color.middle_progress),
                        Color.BLUE,
                };
                progressbar.setProgressTintList(new ColorStateList(states, primaryColor));
                progressbar.setSecondaryProgressTintList(new ColorStateList(states, secondaryColor));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.