Android - panel pencarian gaya

229

Saya ingin menata bilah pencarian yang terlihat seperti pada gambar di bawah ini.

masukkan deskripsi gambar di sini

Dengan menggunakan seekbar default, saya akan mendapatkan sesuatu seperti ini:

masukkan deskripsi gambar di sini

Jadi yang saya butuhkan hanyalah mengubah warnanya. Saya tidak perlu gaya tambahan. Apakah ada pendekatan langsung ke depan untuk melakukan ini atau haruskah saya membuat drawable kustom saya?

Saya mencoba membangun yang khusus, tetapi saya tidak bisa mendapatkan yang persis seperti yang ditunjukkan di atas. Setelah menggunakan custom drawable, apa yang saya dapatkan adalah seperti yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Jika saya perlu membuat custom, maka tolong sarankan cara mengurangi lebar garis progres dan juga bentuknya.

implementasi kustom saya:

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:

<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>
suresh cheemalamudi
sumber
40
Terima kasih telah menunjukkan contoh perubahan gaya seekbar yang berfungsi, XD. (tidak banyak di internet).
Helin Wang

Jawaban:

297

Saya akan mengekstrak drawables dan xml dari kode sumber Android dan mengubah warnanya menjadi merah. Berikut adalah contoh bagaimana saya menyelesaikan ini untuk drawables mdpi:

Kustom red_scrubber_control.xml(tambahkan ke gambar / gambar):

<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>

Adat: 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>

Kemudian salin gambar yang diperlukan dari kode sumber Android, saya ambil dari tautan ini

Baik untuk menyalin drawables ini untuk setiap hdpi, mdpi, xhdpi. Misalnya saya hanya menggunakan mdpi:

Kemudian gunakan Photoshop ubah warna dari biru menjadi merah:

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

Tambahkan SeekBar ke tata letak:

<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" />

Hasil:

masukkan deskripsi gambar di sini

andrew
sumber
Andrew, terima kasih atas jawabannya. Saya mengalami masalah dengan ini. Saat menggunakan red_scrubber_controldrawable untuk ibu jari, saya mengalami crash. Jika semua drawable di pemilih adalah sama, itu berfungsi dengan baik, tetapi jika saya mengubah salah satu dari mereka, saya mendapat Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...pemikiran?
karl
2
Aduh. Ternyata itu terkait dengan stackoverflow.com/questions/6669296/… . Gambar baru yang saya coba tambahkan secara tidak sengaja 37MB bukannya 2KB ...
karl
Apakah ada cara yang digunakan @dimenuntuk mengatur ukuran ibu jari berdasarkan layar?
Si8
1
@ SiKni8 Anda dapat menentukan dimensi berbeda untuk ukuran layar berbeda berdasarkan parameter normal, besar, xlarge, sw atau w untuk folder nilai. Maka cukup gunakan dimensi ini dalam tata letak, gaya atau tema Anda. Periksa tautan
andrew
1
Terima kasih atas tautannya ke Android Holo Colors Generator. Itu sangat membantu.
Trees
66

Jawaban saya terinspirasi dari Andras Balázs Lajtha jawabnya memungkinkan untuk bekerja tanpa file xml

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
fred dupont
sumber
Warna dialog progres berubah tetapi warna jempol tidak .. mengapa?
Yonatan Nir
7
Jika Anda tidak perlu melakukan ini dalam kode dan tidak ingin membuat daftar lapisan dan drawables dll Anda juga dapat melakukan ini di xml dari seekbar android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Daveloper87
59

Jika Anda menginginkan bilah yang persis sama tetapi berwarna merah, Anda dapat menambahkan filter warna PorterDuff secara terprogram. Anda bisa mendapatkan setiap gambar yang ingin Anda warnai melalui metode kelas dasar ProgressBar . Kemudian atur filter warna untuknya.

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

Jika penyesuaian warna yang diinginkan tidak dapat dilakukan melalui filter Porter Duff, Anda dapat menentukan filter warna Anda sendiri .

Andras Balázs Lajtha
sumber
3
tidak yakin sejak SDK yang mana, proly 21, tetapi jika Anda ingin ikon yang sama hanya warna yang berbeda, cukup tambahkan warna "colorAccent" dalam colors.xml dan itu akan menggunakannya
tibbi
57

Gaya material khusus Android seekbar, untuk kustomisasi seekbar lainnya 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>

gaya materi khusus seekbar

Arnav Rao
sumber
2
Solusi hebat untuk Android> 21
saltandpepper
4
Apakah Anda yakin itu colorControlActivatedadalah parameter yang tepat untuk ibu jari? Seharusnya begitu thumbTint.
Peter Knut
Apa solusi untuk API 21 di bawah ini?
Faisal Shaikh
42

Cukup ganti atributtes warna dengan warna Anda

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>
ionutgyn
sumber
1
Bagaimana cara menggunakan file di seekbar?
mungaih pk
@RahulRastogi bagaimana Anda menggunakan file-file ini? Agak konyol bahwa jawaban ini sangat populer dengan 0 penjelasan tentang cara kerjanya ...
Selali Adobor
1
@AssortedTrailmix Saya melakukannya sejak lama. Coba atur atribut seperti: android: thumb = "@ drawable / thumb" dan di android: properti progressDrawable atur file daftar layer yang dapat ditarik tadi. Anda dapat mencoba: mindfiremobile.wordpress.com/2014/05/20/…
Rahul Rastogi
37

Google telah mempermudah ini dalam SDK 21. Sekarang kami memiliki atribut untuk menentukan warna jempol:

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

k2col
sumber
7
progressTint juga.
afollestad
1
Daftar warna berlaku untuk setiap elemen UI di Android pada API 21, begitulah cara colorAccent diterapkan.
afollestad
16

Semua jawaban itu sudah usang.

Pada tahun 2019, Anda lebih mudah untuk merancang seekbar Anda ke warna pilihan Anda dengan mengubah Anda ProgressBarke ini

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

Styling warna seekbar Anda secara terprogram coba kode berikut

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Giannis Mpountouridis
sumber
Kenapa ditinggalkan?
CoolMind
karena perpustakaan telah berubah
Giannis Mpountouridis
Anda dapat melihat jawaban dari @Ahamadullah Saikat ( stackoverflow.com/a/50074961/2914140 ) atau lvguowei.me/post/customize-android-seekbar-color . Mereka tidak menggunakan pustaka dan mengatur warna SeekBar bahkan untuk API lama.
CoolMind
11

Seperti disebutkan di atas (@andrew), membuat SeekBar kustom sangat mudah dengan situs ini - http://android-holo-colors.com/

Cukup aktifkan SeekBar di sana, pilih warna, dan terima semua sumber daya dan salin ke proyek. Kemudian terapkan dalam xml, misalnya:

  android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
  android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"
Anton Kizema
sumber
10

keluaran:

masukkan deskripsi gambar di sini

dalam file tata letak:

        <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>
Ahamadullah Saikat
sumber
1
tidak tahu AppCompat Seekbar ada
Pierre
10

Baru diatur

android:maxHeight="3dp"
android:minHeight="3dp"

Itu saja

Sunday G Akinsete
sumber
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" />

berfungsi Sama seperti jawaban yang dipilih. tidak perlu membuat file yang dapat digambar atau lainnya. (Hanya dalam 5.0) Salam

Haroon Ahmed
sumber
5

Secara default, Android akan mencocokkan warna progres slider Anda

`<item name="colorAccent">`

nilai di styles.xml Anda . Kemudian, untuk mengatur gambar ibu jari slider kustom, cukup gunakan kode ini di blok tata letak SeekBar xml Anda:

android:thumb="@drawable/slider"
IgorGanapolsky
sumber
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);
Hugo
sumber
4

Untuk API <21 (dan> = 21) Anda dapat menggunakan jawaban @Ahamadullah Saikat atau https://www.lvguowei.me/post/customize-android-seekbar-color/ .

masukkan deskripsi gambar di sini

<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>
CoolMind
sumber
3

Jika Anda menggunakan SeekBar default yang disediakan oleh Android SDK maka itu adalah cara sederhana untuk mengubah warna itu. buka saja color.xml di dalam /res/values/colors.xml dan ubah colorAccent.

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

Saya mengubah 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>

dan 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>

untuk membuat latar belakang & kemajuan 1dptinggi.

vrunoa
sumber
2

Cara mudah untuk mengubah warna bilah pencarian ...

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

Gaya: Progress_color

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

perubahan kelas java ProgressDrawable ()

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

Jika Anda melihat sumber daya Android, bilah pencarian benar-benar menggunakan gambar.

Anda harus membuat drawable yang transparan di bagian atas dan bawah untuk mengatakan 10px dan garis tengah 5px terlihat.

Lihat gambar terlampir. Anda perlu mengubahnya menjadi NinePatch.

masukkan deskripsi gambar di sini

Sagar Waghmare
sumber
dapatkah Anda menyarankan beberapa posting yang sama?
suresh cheemalamudi
Salah satu tautan bagus yang saya temukan - mokasocial.com/2011/02/…
Sagar Waghmare
Solusi Sunday G Akinsete berfungsi, tidak perlu menggunakan NinePatch
Helin Wang
0

Bagi mereka yang menggunakan Pengikatan Data:

  1. Tambahkan metode statis berikut ke kelas apa pun

    @BindingAdapter("app:thumbTintCompat")
    public static void setThumbTint(SeekBar seekBar, @ColorInt int color) {
        seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
  2. Tambahkan app:thumbTintCompatatribut ke SeekBar Anda

    <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}"
    />

Itu dia. Sekarang Anda bisa menggunakannya app:thumbTintCompatdengan apa sajaSeekBar . Warna progres dapat dikonfigurasikan dengan cara yang sama.

Catatan: metode ini juga kompatibel dengan perangkat pra-lolipop.

Stan Mots
sumber
0

Koreksi kecil untuk jawaban oleh @ arnav-rao:

untuk memastikan bahwa ibu jari diwarnai dengan benar, gunakan:

<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>

di sini android: thumbTint sebenarnya warna "ibu jari"

levus.lazarus
sumber
0

periksa tutorial ini sangat bagus

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

sederhana:

<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"/>

lalu file gaya:

<?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>
Joolah
sumber
0

Saya ingin membuat gaya untuk seekbar dan kemudian menambahkan gaya ke tema sehingga saya bisa menerapkannya ke seluruh tema sambil tetap membiarkan subtyle untuk menimpanya. Inilah yang saya lakukan:

<!-- 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>

Di atas mengatur gaya seekbar Tema menjadi biru untuk semua perangkat 21+ termasuk Samsung (yang membutuhkan seekBarStyle diterapkan selain android: seekBarStyle; tidak yakin mengapa tetapi saya melihat masalah ini secara langsung). Jika Anda ingin semua pencari menyimpan gaya tema dan hanya menerapkan gaya pencari hijau ke beberapa widget, tambahkan yang berikut ke widget yang Anda inginkan:

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

Dengan Perpustakaan Komponen Bahan versi 1.2.0 Anda dapat menggunakan Sliderkomponen baru .

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

Anda dapat mengganti warna default menggunakan sesuatu seperti:

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

masukkan deskripsi gambar di sini

Jika tidak, Anda dapat menggunakan atribut ini di tata letak untuk menentukan warna atau pemilih warna:

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

atau Anda dapat menggunakan gaya khusus:

 <style name="customSlider" parent="Widget.MaterialComponents.Slider">
    <item name="activeTrackColor">@color/....</item>
    <item name="inactiveTrackColor">@color/....</item>
    <item name="thumbColor">@color/....</item>
  </style>
Gabriele Mariotti
sumber
dokumen resmi menyatakan bahwa itu masih direncanakan. Apakah ada alternatif lain?
tejaspatel
@tejaspatel Dalam jawabannya ada tautan komponen resmi. Versi 1 sekarang dirilis di 1.2.0-alpha01.
Gabriele Mariotti
-1

Anda juga dapat melakukannya dengan cara ini:

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

Semoga ini bisa membantu!

Omar Aflak
sumber
1
Saya tidak berpikir Anda dapat menggunakan warna di mana ia sedang mencari drawable
Lancelot