Saya ingin menata bilah pencarian yang terlihat seperti pada gambar di bawah ini.
Dengan menggunakan seekbar default, saya akan mendapatkan sesuatu seperti ini:
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:
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>
sumber
Jawaban:
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):Adat:
red_scrubber_progress.xml
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_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 ke tata letak:
Hasil:
sumber
red_scrubber_control
drawable 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 mendapatResources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...
pemikiran?@dimen
untuk mengatur ukuran ibu jari berdasarkan layar?Jawaban saya terinspirasi dari Andras Balázs Lajtha jawabnya memungkinkan untuk bekerja tanpa file xml
sumber
android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
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.
Jika penyesuaian warna yang diinginkan tidak dapat dilakukan melalui filter Porter Duff, Anda dapat menentukan filter warna Anda sendiri .
sumber
Gaya material khusus Android seekbar, untuk kustomisasi seekbar lainnya http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples
sumber
colorControlActivated
adalah parameter yang tepat untuk ibu jari? Seharusnya begituthumbTint
.Cukup ganti atributtes warna dengan warna Anda
background.xml
progress.xml
style.xml
thumb.xml
sumber
Google telah mempermudah ini dalam SDK 21. Sekarang kami memiliki atribut untuk menentukan warna jempol:
http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode
sumber
Semua jawaban itu sudah usang.
Pada tahun 2019, Anda lebih mudah untuk merancang seekbar Anda ke warna pilihan Anda dengan mengubah Anda
ProgressBar
ke iniStyling warna seekbar Anda secara terprogram coba kode berikut
sumber
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:
sumber
keluaran:
dalam file tata letak:
drawable / progress.xml
drawable / background_fill.xml
drawable / progress_fill.xml
drawable / custom_thumb.xml
colors.xml
sumber
Baru diatur
Itu saja
sumber
berfungsi Sama seperti jawaban yang dipilih. tidak perlu membuat file yang dapat digambar atau lainnya. (Hanya dalam 5.0) Salam
sumber
Secara default, Android akan mencocokkan warna progres slider Anda
nilai di styles.xml Anda . Kemudian, untuk mengatur gambar ibu jari slider kustom, cukup gunakan kode ini di blok tata letak SeekBar xml Anda:
sumber
sumber
Untuk API <21 (dan> = 21) Anda dapat menggunakan jawaban @Ahamadullah Saikat atau https://www.lvguowei.me/post/customize-android-seekbar-color/ .
drawable / seek_bar_ruler.xml:
drawable / seek_bar_slider.xml:
sumber
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.
sumber
Saya mengubah
background_fill.xml
dan
progress_fill.xml
untuk membuat latar belakang & kemajuan
1dp
tinggi.sumber
Cara mudah untuk mengubah warna bilah pencarian ...
Gaya: Progress_color
perubahan kelas java ProgressDrawable ()
sumber
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.
sumber
Bagi mereka yang menggunakan Pengikatan Data:
Tambahkan metode statis berikut ke kelas apa pun
Tambahkan
app:thumbTintCompat
atribut ke SeekBar AndaItu dia. Sekarang Anda bisa menggunakannya
app:thumbTintCompat
dengan apa sajaSeekBar
. Warna progres dapat dikonfigurasikan dengan cara yang sama.Catatan: metode ini juga kompatibel dengan perangkat pra-lolipop.
sumber
Koreksi kecil untuk jawaban oleh @ arnav-rao:
untuk memastikan bahwa ibu jari diwarnai dengan benar, gunakan:
di sini android: thumbTint sebenarnya warna "ibu jari"
sumber
periksa tutorial ini sangat bagus
https://www.lvguowei.me/post/customize-android-seekbar-color/
sederhana:
lalu file gaya:
sumber
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:
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:
sumber
Dengan Perpustakaan Komponen Bahan versi 1.2.0 Anda dapat menggunakan
Slider
komponen baru .Anda dapat mengganti warna default menggunakan sesuatu seperti:
Jika tidak, Anda dapat menggunakan atribut ini di tata letak untuk menentukan warna atau pemilih warna:
atau Anda dapat menggunakan gaya khusus:
sumber
Anda juga dapat melakukannya dengan cara ini:
Semoga ini bisa membantu!
sumber