Android - स्टाइलिंग बार


229

मैं एक सीक बार स्टाइल करना चाहता था जो नीचे की छवि में एक जैसा दिखता है।

यहां छवि विवरण दर्ज करें

डिफ़ॉल्ट सीकर के उपयोग से मुझे कुछ इस तरह मिलेगा:

यहां छवि विवरण दर्ज करें

इसलिए मुझे केवल रंग बदलने की आवश्यकता है। मुझे अतिरिक्त शैलियों की आवश्यकता नहीं है। क्या ऐसा करने के लिए कोई सीधे आगे का दृष्टिकोण है या मुझे अपने कस्टम ड्रॉबल का निर्माण करना चाहिए?

मैंने कस्टम एक के निर्माण की कोशिश की, लेकिन मुझे वह सटीक नहीं मिला जैसा कि ऊपर दिखाया गया है। कस्टम ड्रा करने योग्य का उपयोग करने के बाद, मुझे जो मिलता है वह नीचे दिखाया गया है:

यहां छवि विवरण दर्ज करें

यदि मुझे कस्टम एक बनाने की आवश्यकता है, तो कृपया सुझाव दें कि प्रगति लाइन की चौड़ाई और आकृति को कैसे कम किया जाए।

मेरा कस्टम कार्यान्वयन:

background_fill.xml:

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

    <gradient
        android:angle="90"
        android:centerColor="#FF555555"
        android:endColor="#FF555555"
        android:startColor="#FF555555" />

    <corners android:radius="1dp" />

    <stroke
        android:width="1dp"
        android:color="#50999999" />
    <stroke
        android:width="1dp"
        android:color="#70555555" />

</shape>

progress_fill.xml

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

    <gradient
        android:angle="90"
        android:centerColor="#FFB80000"
        android:endColor="#FFFF4400"
        android:startColor="#FF470000" />

    <corners android:radius="1dp" />

    <stroke
        android:width="1dp"
        android:color="#50999999" />
    <stroke
        android:width="1dp"
        android:color="#70555555" />

</shape>

progress.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"
        android:drawable="@drawable/background_fill"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>

</layer-list>

thumb.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <gradient
        android:angle="270"
        android:endColor="#E5492A"
        android:startColor="#E5492A" />

    <size
        android:height="20dp"
        android:width="20dp" />

</shape>

सीक करने की पट्टी:

<SeekBar
        android:id="@+id/seekBarDistance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="88dp"
        android:progressDrawable="@drawable/progress"
        android:thumb="@drawable/thumb" >
    </SeekBar>

40
एक काम कर रहे साकबार शैली परिवर्तन उदाहरण एक्सडी दिखाने के लिए धन्यवाद। (इंटरनेट पर कई नहीं)।
हेलिन वांग

जवाबों:


297

मैं एंड्रॉइड सोर्स कोड से ड्रॉबल्स और एक्सएमएल निकालूंगा और उसका रंग बदलकर लाल कर दूंगा। यहाँ उदाहरण है कि मैंने इसे mdpi ड्रॉबल्स के लिए कैसे पूरा किया:

कस्टम red_scrubber_control.xml(रिस / जोड़ने योग्य जोड़ें):

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/red_scrubber_control_disabled_holo" android:state_enabled="false"/>
    <item android:drawable="@drawable/red_scrubber_control_pressed_holo" android:state_pressed="true"/>
    <item android:drawable="@drawable/red_scrubber_control_focused_holo" android:state_selected="true"/>
    <item android:drawable="@drawable/red_scrubber_control_normal_holo"/>
</selector>

कस्टम: red_scrubber_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/red_scrubber_track_holo_light"/>
    <item android:id="@android:id/secondaryProgress">
        <scale
            android:drawable="@drawable/red_scrubber_secondary_holo"
            android:scaleWidth="100%" />
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/red_scrubber_primary_holo"
            android:scaleWidth="100%" />
    </item>

</layer-list>

फिर एंड्रॉइड सोर्स कोड से आवश्यक ड्रॉबल्स कॉपी करें, मैंने इस लिंक से लिया

प्रत्येक एचडीपीआई, एमडीपीआई, एक्सएचडीपीआई के लिए इन ड्रॉएबल्स को कॉपी करना अच्छा है। उदाहरण के लिए मैं केवल mdpi का उपयोग करता हूं:

तब फ़ोटोशॉप का रंग नीले से लाल रंग में बदल जाता है:

red_scrubber_control_disabled_holo.png: red_scrubber_control_disabled_holo

red_scrubber_control_focused_holo.png: red_scrubber_control_focused_holo

red_scrubber_control_normal_holo.png: red_scrubber_control_normal_holo

red_scrubber_control_pressed_holo.png: red_scrubber_control_pressed_holo

red_scrubber_primary_holo.9.png: red_scrubber_primary_holo.9

red_scrubber_secondary_holo.9.png: red_scrubber_secondary_holo.9

red_scrubber_track_holo_light.9.png: red_scrubber_track_holo_light.9

SeekBar को लेआउट में जोड़ें:

<SeekBar
    android:id="@+id/seekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@drawable/red_scrubber_progress"
    android:thumb="@drawable/red_scrubber_control" />

परिणाम:

यहां छवि विवरण दर्ज करें


एंड्रयू, महान जवाब के लिए धन्यवाद। मैं इस के साथ एक मुद्दा रहा हूँ। red_scrubber_controlअंगूठे के लिए ड्रॉबल का उपयोग करते समय , मैं एक दुर्घटना में भागता हूं। यदि चयनकर्ता में सभी ड्राबल्स समान हैं, तो यह ठीक काम करता है, लेकिन अगर मैं उनमें से किसी एक को बदलता हूं, तो मुझे Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...कोई विचार मिलता है ?
कर्ल

2
ओह। पता चला कि यह stackoverflow.com/questions/6669296/… से संबंधित था । नई छवि मैं जोड़ने की कोशिश कर रहा था गलती से 2KB के बजाय 37MB ...
कार्ल

क्या @dimenस्क्रीन के आधार पर अंगूठे के आकार को सेट करने के लिए उपयोग करना है?
Si8

1
@ SiKni8 आप मान फ़ोल्डर के लिए सामान्य, बड़े, xlarge, sw या w मापदंडों के आधार पर विभिन्न स्क्रीन आकारों के लिए विभिन्न आयामों को परिभाषित कर सकते हैं। तो बस अपने लेआउट, शैली या विषय में इस आयाम का उपयोग करें। इस लिंक को देखें
andrew

1
Android होलो कलर्स जेनरेटर की लिंक के लिए धन्यवाद। यह बहुत मददगार है।
पेड़

66

मेरा जवाब एन्ड्रास बलजस लाजथा से प्रेरित है, यह बिना xml फ़ाइल के काम करने की अनुमति देता है

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

प्रगति संवाद का रंग बदल गया लेकिन अंगूठे का रंग नहीं हुआ .. क्यों?
योनातन नीर

7
यदि आपको कोड में ऐसा करने की आवश्यकता नहीं है और आप परत सूची और ड्रॉइबल्स आदि बनाना नहीं चाहते हैं, तो आप इसे android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
साकबर

59

यदि आप बिल्कुल समान बार चाहते हैं, लेकिन लाल रंग में, तो आप प्रोग्रामर में पोर्टरडफ कलर फ़िल्टर जोड़ सकते हैं। आप प्रत्येक ड्रॉबल को प्राप्त कर सकते हैं जिसे आप ProgressBar बेस क्लास के तरीकों से रंगना चाहते हैं । फिर इसके लिए एक कलर फिल्टर सेट करें ।

mySeekBar.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(srcColor, PorterDuff.Mode.MULTIPLY));

यदि वांछित रंग समायोजन एक पोर्टर डफ फिल्टर के माध्यम से नहीं किया जा सकता है, तो आप अपना स्वयं का रंग फ़िल्टर निर्दिष्ट कर सकते हैं


3
यह सुनिश्चित नहीं है कि जिसके बाद से SDK, proly 21, लेकिन यदि आप एक ही आइकन को बस अलग रंग के लिए चाहते हैं, तो बस रंगों में "colorAccent" रंग जोड़ें ।ml और यह इसका उपयोग करेगा
tibbi

57

एंड्रॉइड सीकर कस्टम सामग्री शैली, अन्य सीकबार अनुकूलन के लिए http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">#f4511e</item>
    <item name="android:progressTint">#388e3c</item>
    <item name="android:colorControlActivated">#c51162</item>
</style>

सीकबार कस्टम सामग्री शैली


2
Android के लिए महान समाधान> 21
साल्टेंडेप्पेर

4
क्या आप सुनिश्चित हैं कि colorControlActivatedअंगूठे के लिए सही पैरामीटर है? यह होना चाहिए thumbTint
पीटर नट

नीचे एपीआई 21 के लिए समाधान क्या है?
फैसल शेख

42

बस रंग के रंग को अपने रंग से बदल दें

background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">

    <stroke android:width="1dp" android:color="#D9D9D9"/>
    <corners android:radius="1dp" />

</shape>

progress.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="line">

    <stroke android:width="1dp" android:color="#2EA5DE"/>
    <corners android:radius="1dp" />

</shape>

style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/seekbar_background"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/seekbar_progress" />
    </item>

</layer-list>

thumb.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <size android:height="30dp" android:width="30dp"/>
    <stroke android:width="18dp" android:color="#882EA5DE"/>
    <solid android:color="#2EA5DE" />
    <corners android:radius="1dp" />

</shape>

1
मैं फाइल्स का उपयोग सीकर में कैसे कर सकता हूँ?
मुंगैह पृष्ठ 19

@RahulRastogi आपने इन फ़ाइलों का उपयोग कैसे किया? मूर्खतापूर्ण की तरह यह जवाब 0 विवरण के साथ इतना लोकप्रिय है कि यह कैसे काम करता है ...
सेलाली एडोबोर

1
@AssortedTrailmix मैंने इसे लंबे समय पहले किया था। एंड्रॉइड: थंब = "@ ड्रॉएबल / थंब" और एंड्रॉइड में प्रगति की विशेषताओं को सेट करने का प्रयास करें। आप कोशिश कर सकते हैं: mindfiremobile.wordpress.com/2014/05/20/…
राहुल रस्तोगी

37

Google ने SDK 21 में यह आसान बना दिया है। अब हमारे पास अंगूठे के रंग को निर्दिष्ट करने के लिए विशेषताएँ हैं:

android:thumbTint
android:thumbTintMode
android:progressTint

http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode


7
प्रगति, भी।
एफ़ोलेस्टैड

1
एंड्रॉइड पर एपीआई 21 के रूप में प्रत्येक यूआई तत्व पर टिंट सूचियां लागू होती हैं, यह है कि कैसे कलरएक्वेंट लागू होता है।
एफ़ोलेस्टैड

16

उन सभी उत्तरों को पदावनत किया जाता है।

2019 में यह अपनी पसंद के रंग के लिए अपने seekbar शैली आसान है अपने को बदलने के द्वारा ProgressBarइस के लिए

<SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progressTint="#36970f"
            android:thumbTint="#36970f"
            />

अपने साबर रंग को स्टाइल करके प्रोग्रामेटिक रूप से निम्न कोड आज़माएं

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

पदावनत क्यों किया गया?
कूलमैन्ड

क्योंकि पुस्तकालय बदल गए हैं
गियान्निस म्पाउटौरिडिस

आप @ अहमदुल्लाह सैकत ( stackoverflow.com/a/50074961/2914140 ) या lvguowei.me/post/customize-android-seekbar-color का जवाब देख सकते हैं । वे पुस्तकालयों का उपयोग नहीं करते हैं और पुराने एपीआई के लिए भी सीकबार रंग सेट करते हैं।
कूलमाइंड

11

जैसा कि ऊपर बताया गया है (@andrew), कस्टम सीकर बनाना इस साइट के साथ सुपर आसान है - http://android-holo-colers.com/

बस वहां सीकबार को सक्षम करें, रंग चुनें, और सभी संसाधनों को प्राप्त करें और प्रोजेक्ट करने के लिए कॉपी करें। फिर उन्हें xml में लागू करें, उदाहरण के लिए:

  android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
  android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"

10

उत्पादन:

यहां छवि विवरण दर्ज करें

लेआउट फ़ाइल में:

        <android.support.v7.widget.AppCompatSeekBar
            android:id="@+id/seekBar_bn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:max="25"
            android:minHeight="10dp"
            android:progress="10"
            android:progressDrawable="@drawable/progress"
            android:thumb="@drawable/custom_thumb" />

drawable / progress.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"
        android:drawable="@drawable/background_fill"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>

</layer-list>

drawable / background_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="#888888" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

drawable / progress_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="@color/myPrimaryColor" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

drawable / custom_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/myPrimaryColor"/>
            <size
                android:width="22dp"
                android:height="22dp"/>
        </shape>
    </item>
</layer-list>

colors.xml

<color name="myPrimaryColor">#660033</color>

पता नहीं था AppCompat सीकबार अस्तित्व में है
पियरे


9
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="@color/red"
android:thumbTint="@color/red" />

काम करता है एक ही उत्तर चयनित की तरह। कोई भी ड्रा करने योग्य फ़ाइल या अन्य बनाने की आवश्यकता नहीं है। (केवल 5.0 में) सादर


5

डिफ़ॉल्ट रूप से, एंड्रॉइड आपके स्लाइडर के प्रगति रंग से मेल खाएगा

`<item name="colorAccent">`

अपनी शैलियों में मूल्य । xml । फिर, एक कस्टम स्लाइडर अंगूठे की छवि सेट करने के लिए, बस इस कोड का उपयोग अपने SeekBar xml लेआउट के ब्लॉक में करें:

android:thumb="@drawable/slider"

5
LayerDrawable progressDrawable = (LayerDrawable) mSeekBar.getProgressDrawable();

// progress bar line *progress* color
Drawable processDrawable = progressDrawable.findDrawableByLayerId(android.R.id.progress);

// progress bar line *background* color
Drawable backgroundDrawable = progressDrawable.findDrawableByLayerId(android.R.id.background);

// progress bar line *secondaryProgress* color
Drawable secondaryProgressDrawable = progressDrawable.findDrawableByLayerId(android.R.id.secondaryProgress);
processDrawable.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

// progress bar line all color
mSeekBar.getProgressDrawable().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_IN);

// progress circle color
mSeekBar.getThumb().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);

4

API के लिए <21 (और> = 21) आप @Ahamadullah Saikat या https://www.lvguowei.me/post/customize-android-seekbar-color/ के उत्तर का उपयोग कर सकते हैं ।

यहां छवि विवरण दर्ज करें

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxHeight="3dp"
    android:minHeight="3dp"
    android:progress="50"
    android:progressDrawable="@drawable/seek_bar_ruler"
    android:thumb="@drawable/seek_bar_slider"
    />

drawable / seek_bar_ruler.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 android:shape="rectangle">
            <solid
                android:color="#94A3B3" />
            <corners android:radius="2dp" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <solid
                    android:color="#18244D" />
                <corners android:radius="2dp" />
            </shape>
        </clip>
    </item>
</layer-list>

drawable / seek_bar_slider.xml:

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

    <solid android:color="#FFFFFF" />
    <stroke
        android:width="4dp"
        android:color="#18244D"
        />
    <size
        android:width="25dp"
        android:height="25dp"
        />
</shape>

3

यदि आप Android Sdk द्वारा प्रदान की गई डिफ़ॉल्ट सीकबार का उपयोग कर रहे हैं तो उनका रंग बदलने का एक सरल तरीका है। बस color.xml के अंदर /res/values/colors.xml पर जाएं और colorAccent बदलें।

<resources>
    <color name="colorPrimary">#212121</color>
    <color name="colorPrimaryDark">#1e1d1d</color>
     <!-- change below line -->
    <color name="colorAccent">#FF4081</color>
</resources>

2

मैं बदल देता हूं background_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#616161"
    android:endColor="#616161"
    android:startColor="#616161" />
<corners android:radius="0dp" />
<stroke
    android:width="1dp"
    android:color="#616161" />
<stroke
    android:width="1dp"
    android:color="#616161" />
</shape>

और यह progress_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#fafafa"
    android:endColor="#fafafa"
    android:startColor="#fafafa" />
<corners android:radius="1dp" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
 </shape>

पृष्ठभूमि और प्रगति 1dpऊंचाई बनाने के लिए ।


2

बार का रंग बदलने के लिए सरल तरीका ...

 <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:theme="@style/Progress_color"/>

शैली: प्रगति_ रंग

 <style name="Progress_color">
    <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
</style>

जावा वर्ग परिवर्तन ProgressDrawable ()

seek_bar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.MULTIPLY);

1

यदि आप एंड्रॉइड संसाधनों को देखते हैं, तो खोज बार वास्तव में छवियों का उपयोग करते हैं।

आपको एक ड्रा करने योग्य बनाना होगा जो 10px के लिए ऊपर और नीचे पारदर्शी हो और केंद्र 5px लाइन दिखाई दे।

संलग्न छवि देखें। आपको इसे NinePatch में बदलने की आवश्यकता है।

यहां छवि विवरण दर्ज करें


क्या आप कृपया उसी पर कुछ पोस्ट सुझा सकते हैं?
सुरेश चेम्मलमुदी

एक अच्छा लिंक जो मुझे मिला - mokasocial.com/2011/02/…
सागर वाघमारे

संडे जी अकिंसेट का समाधान काम करता है, नाइनपैच का उपयोग करने की आवश्यकता नहीं है
हेलिन वैंग

0

डेटा बाइंडिंग का उपयोग करने वालों के लिए:

  1. निम्न स्थिर विधि को किसी भी वर्ग में जोड़ें

    @BindingAdapter("app:thumbTintCompat")
    public static void setThumbTint(SeekBar seekBar, @ColorInt int color) {
        seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
  2. app:thumbTintCompatअपने सीकबार में विशेषता जोड़ें

    <SeekBar
           android:id="@+id/seek_bar"
           style="@style/Widget.AppCompat.SeekBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           app:thumbTintCompat="@{@android:color/white}"
    />

बस। अब आप app:thumbTintCompatकिसी के साथ भी उपयोग कर सकते हैंSeekBar । प्रगति टिंट को उसी तरह से कॉन्फ़िगर किया जा सकता है।

नोट: यह विधि पूर्व-लॉलीपॉप उपकरणों के साथ भी अनुकूल है।


0

@ Arnav-rao द्वारा उत्तर के लिए छोटा सुधार:

यह सुनिश्चित करने के लिए कि अंगूठा ठीक से रंग गया है, उपयोग करें:

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">@color/colorBgTint</item>
    <item name="android:progressTint">@color/colorProgressTint</item>
    <item name="android:thumbTint">@color/colorThumbTint</item>
</style>

यहाँ Android: thumbTint वास्तव में "थंब" रंग


0

इस ट्यूटोरियल को बहुत अच्छे से देखें

https://www.lvguowei.me/post/customize-android-seekbar-color/

सरल :

<SeekBar
                android:id="@+id/seekBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:max="100"
                android:maxHeight="3dp"
                android:minHeight="3dp"
                android:progressDrawable="@drawable/seekbar_style"
                android:thumbTint="@color/positive_color"/>

फिर एक शैली फ़ाइल:

<?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 android:shape="rectangle" >
            <solid
                android:color="@color/positive_color" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle" >
                <solid
                    android:color="@color/positive_color" />
            </shape>
        </clip>
    </item>
</layer-list>

0

मैं सीकर के लिए एक शैली बनाना चाहता था और फिर शैली को एक थीम में जोड़ता हूं ताकि मैं इसे पूरी थीम पर लागू कर सकूं, जबकि अभी भी एक सब्स्टाइल इसे ओवरराइड करने की अनुमति देता है। मैंने जो किया था यह रहा:

<!-- Blue App Theme -->
    <style name="AppTheme.Blue" parent="BaseTheme.Blue">        
        <item name="android:seekBarStyle">@style/SeekbarStyle.Blue</item>
        <item name="seekBarStyle">@style/SeekbarStyle.Blue</item> <!--This is essential for some devices, e.g. Samsung-->
</style>

<!-- Slider Styles -->
<style name="SeekbarStyle.Blue" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_blue_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_blue_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_blue_a700</item>
</style>

<style name="SeekbarStyle.Green" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_green_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_green_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_green_a700</item>
</style>

उपरोक्त सैमसंग के लिए 21+ सभी डिवाइसों के लिए थीम सीकरबार शैली को नीले रंग में सेट करता है (जिसमें एंड्रॉइड के अलावा साधकबर्टल की आवश्यकता होती है: seekBarStyle; निश्चित रूप से क्यों नहीं, लेकिन मैंने इस मुद्दे को पहली बार देखा)। यदि आप चाहते हैं कि सभी साकबर्स थीम शैली को बनाए रखें और केवल कुछ विजेट्स के लिए हरे रंग की साकबार शैली लागू करें, तो निम्नलिखित विजेट जोड़ें जो आप चाहते हैं:

<SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.Green"/>

0

सामग्री घटक लाइब्रेरी संस्करण 1.2.0 के साथ आप नए Sliderघटक का उपयोग कर सकते हैं ।

 <com.google.android.material.slider.Slider
       android:valueFrom="0"
       android:valueTo="300"
       android:value="200"
       android:theme="@style/slider_red"
       />

आप कुछ का उपयोग करके डिफ़ॉल्ट रंग को ओवरराइड कर सकते हैं:

  <style name="slider_red">
    <item name="colorPrimary">#......</item>
  </style>

यहां छवि विवरण दर्ज करें

अन्यथा आप रंग या रंग चयनकर्ता को परिभाषित करने के लिए लेआउट में इन विशेषताओं का उपयोग कर सकते हैं:

   <com.google.android.material.slider.Slider
       app:activeTrackColor="@color/...."
       app:inactiveTrackColor="@color/...."
       app:thumbColor="@color/...."
       />

या आप एक कस्टम शैली का उपयोग कर सकते हैं:

 <style name="customSlider" parent="Widget.MaterialComponents.Slider">
    <item name="activeTrackColor">@color/....</item>
    <item name="inactiveTrackColor">@color/....</item>
    <item name="thumbColor">@color/....</item>
  </style>

आधिकारिक डॉक्स कह रहे हैं कि इसकी अभी भी योजना बनाई गई है। क्या कोई और विकल्प है?
तेजसपेटेल

@tejaspatel उत्तर में आधिकारिक घटक का लिंक है। पहला संस्करण अब 1.2.0-अल्फा01 में जारी किया गया है।
गैब्रिएल मैरीओटी

-1

आप इसे इस तरह से भी बना सकते हैं:

<SeekBar
    android:id="@+id/redSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@color/red"
    android:maxHeight="3dip"/>

आशा है कि यह मदद करेगा!


1
मुझे नहीं लगता कि आप एक रंग का उपयोग कर सकते हैं जहां यह एक आकर्षक लग रहा है
लैंसलॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.