Saya ingin gaya yang mencari bar yang terlihat seperti pada gambar di bawah ini.
Dengan menggunakan default seekbar aku akan mendapatkan sesuatu seperti ini:
Jadi apa yang saya butuhkan adalah untuk hanya mengubah warna. Saya perlu ada tambahan gaya. Apakah ada lurus ke depan pendekatan untuk melakukan hal ini atau saya harus membangun kebiasaan saya drawable.?
Saya mencoba membangun kustom satu, tapi aku tidak bisa mendapatkan tepat seperti yang ditunjukkan di atas. Setelah menggunakan custom drawable, apa yang saya dapatkan adalah seperti yang ditunjukkan di bawah ini:
Jika saya perlu untuk membangun kustom satu, maka silakan menyarankan cara untuk mengurangi lebar kemajuan line dan juga bentuk.
saya custom pelaksanaan:
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>
Saya akan ekstrak drawables dan xml dari kode sumber Android dan berubah warna menjadi merah. Berikut adalah contoh bagaimana saya menyelesaikan ini untuk mdpi drawables:
Custom red_scrubber_control.xml
(tambahkan ke res/drawable):
<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>
Custom: 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 copy diperlukan drawables dari kode sumber Android, saya mengambil link ini
Hal ini baik untuk copy ini drawables untuk setiap hdpi, mdpi, xhdpi. Untuk contoh saya gunakan hanya mdpi:
Kemudian menggunakan Photoshop mengubah warna dari biru ke merah:
red_scrubber_control_disabled_holo.png:
red_scrubber_control_focused_holo.png:
red_scrubber_control_normal_holo.png:
red_scrubber_control_pressed_holo.png:
red_scrubber_primary_holo.9.png:
red_scrubber_secondary_holo.9.png:
red_scrubber_track_holo_light.9.png:
Tambahkan SeekBar untuk 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" />
Hasilnya:
Jawaban saya ini terinspirasi dari Andras Balázs Lajtha jawaban hal ini memungkinkan untuk bekerja tanpa file xml
seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Jika anda ingin persis sama bar tapi di merah, anda bisa menambahkan PorterDuff filter warna programatik. Anda bisa mendapatkan setiap drawable yang ingin anda warnai melalui metode ProgressBar kelas dasar. Kemudian mengatur color filter untuk itu.
mySeekBar.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(srcColor, PorterDuff.Mode.MULTIPLY));
Jika ingin warna penyesuaian dapat't dapat dibuat melalui Bell Duff filter, anda dapat menentukan sendiri warna filter]3.
Android custom seekbar bahan gaya, lain seekbar kustomisasi 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>
Hanya mengganti warna atributtes 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>
Google telah membuat ini lebih mudah di SDK 21. Sekarang kita memiliki atribut untuk menentukan jempol warna warna:
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
Seperti yang disebutkan di atas (@andrew) , menciptakan custom SeekBar super Mudah dengan situs ini - http://android-holo-colors.com/
Hanya mengaktifkan SeekBar ada, memilih warna, dan menerima semua sumber daya dan copy ke proyek. Kemudian menerapkannya dalam xml, misalnya:
android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"
Hanya mengatur
android:maxHeight="3dp"
android:minHeight="3dp"
Yang's semua
<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" />
bekerja sama Seperti jawaban yang dipilih. tidak perlu untuk membuat setiap drawable file atau yang lain.(DI 5.0 saja) Salam
Semua jawaban-jawaban yang usang.
Di tahun 2019 itu's mudah untuk gaya anda seekbar untuk warna pilihan anda dengan mengubah anda ProgressBar
ini
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progressTint="#36970f"
android:thumbTint="#36970f"
/>
Menata seekbar warna pemrograman cobalah kode berikut
seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
output:
dalam tata letak file:
<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>
Secara default, android akan sesuai dengan kemajuan warna slider anda untuk
`<item name="colorAccent">`
nilai anda styles.xml. Kemudian, untuk mengatur kustom slider gambar jempol, hanya menggunakan kode ini anda SeekBar xml layout's block:
android:thumb="@drawable/slider"
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);
Jika anda menggunakan default SeekBar yang disediakan oleh android Sdk maka mereka adalah cara sederhana untuk mengubah warna itu . hanya pergi ke color.xml dalam /res/values/colors.xml dan mengubah colorAccent.
<resources>
<color name="colorPrimary">#212121</color>
<color name="colorPrimaryDark">#1e1d1d</color>
<!-- change below line -->
<color name="colorAccent">#FF4081</color>
</resources>
Cara sederhana untuk mengubah berusaha warna bar ...
<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>
jawa kelas perubahan ProgressDrawable()
seek_bar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.MULTIPLY);
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 1dp
tinggi.
Jika anda melihat sumber daya Android, mencari bar benar-benar menggunakan gambar.
Anda harus membuat drawable yang transparan di atas dan bawah untuk mengatakan 10px dan pusat 5px garis yang terlihat.
Lihat gambar terlampir. Anda perlu untuk mengubahnya menjadi sebuah NinePatch.
Saya ingin menciptakan sebuah gaya untuk seekbar dan kemudian tambahkan style untuk tema sehingga aku bisa diterapkan untuk seluruh tema sementara masih memungkinkan substyle untuk menimpa. Berikut adalah apa 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 menetapkan Tema seekbar gaya biru untuk semua perangkat 21+ termasuk Samsung (yang perlu seekBarStyle diterapkan selain android:seekBarStyle; tidak yakin mengapa tapi saya melihat masalah ini secara langsung). Jika anda ingin semua seekbars untuk menjaga tema gaya dan hanya berlaku hijau seekbar gaya untuk beberapa widget kemudian tambahkan baris berikut ke widget yang anda inginkan:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.Green"/>
Koreksi kecil untuk jawabannya by @arnav-rao:
untuk memastikan bahwa ibu jari berwarna 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>
berikut android:thumbTint sebenarnya warna "ibu jari"
cek tutorial ini sangat baik
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"/>
kemudian gaya file:
<?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>