Saya telah menetapkan Horizontal ProgressBar
.
Saya ingin mengubah warna progres menjadi kuning.
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="80dip"
android:layout_height="20dip"
android:focusable="false"
style="?android:attr/progressBarStyleHorizontal" />
Masalahnya, warna progresnya berbeda di perangkat yang berbeda. Jadi, saya ingin memperbaiki warna progres.
android
android-progressbar
Nishant Shah
sumber
sumber
Jawaban:
Saya menyalin ini dari salah satu aplikasi saya, jadi mungkin ada beberapa atribut tambahan, tetapi harus memberi Anda ide. Ini dari tata letak yang memiliki bilah progres:
Kemudian buat drawable baru dengan sesuatu yang mirip dengan yang berikut ini (Dalam hal ini
greenprogress.xml
):Anda dapat mengubah warna sesuai kebutuhan, ini akan memberi Anda bilah kemajuan hijau.
sumber
android:id="@android:id/progress"
,android:id="@android:id/background"
danandroid:id="@android:id/secondaryProgress"
berdiri untuk.Solusi yang lebih sederhana:
progess_drawable_blue
sumber
Cukup buat gaya di
values/styles.xml
.Kemudian atur gaya ini sebagai
ProgressBar
tema Anda .dan tidak masalah bilah kemajuan Anda bersifat horizontal atau bundar. Itu saja.
sumber
Jika Anda hanya ingin mengubah warna bilah kemajuan, Anda cukup menggunakan filter warna dalam metode onCreate () aktivitas Anda:
Ide dari sini .
Anda hanya perlu melakukan ini untuk versi pra-lolipop. Pada Lollipop Anda dapat menggunakan atribut style colorAccent.
sumber
SeekBar
itu adalah sama, hanya menambahkan untuk API 16:seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
. Ini akan mengubah warna ibu jari bundar itu.setColorFilter()
drawable secara langsung akan menerapkan warna di mana-mana. Karena ini adalah apa yang saya tidak perlu, aku hanya disebutmutate()
padaDrawable
(yaitu sepertiseekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
untuk API level 21 atau lebih tinggi gunakan saja
sumber
Ada 3 cara untuk menyelesaikan pertanyaan ini:
Secara khusus ada banyak kebingungan di sekitar # 2 dan # 3, seperti terlihat dalam komentar untuk jawaban amfcosta. Jawaban itu akan menghasilkan hasil warna yang tidak dapat diprediksi kapan saja Anda ingin mengatur progressbar ke apa pun kecuali warna primer, karena hanya memodifikasi warna latar belakang, dan area "clip" progress bar yang sebenarnya masih akan menjadi overlay kuning dengan opacity berkurang. Misalnya, menggunakan metode itu untuk mengatur latar belakang ke ungu gelap akan menghasilkan progress bar "klip" warna beberapa warna merah muda gila yang dihasilkan dari pencampuran ungu gelap dan kuning melalui alpha berkurang.
Jadi bagaimanapun, # 1 dijawab dengan sempurna oleh Ryan dan Štarke menjawab sebagian besar dari # 3, tetapi bagi mereka yang mencari solusi lengkap untuk # 2 dan # 3:
Cara menyesuaikan warna progressbar secara terprogram, tetapi pilih warna dari warna yang telah ditentukan yang dinyatakan dalam XML
res / drawable / my_progressbar.xml :
Buat file ini tetapi ubah warna dalam my_progress dan my_secondsProgress:
(CATATAN: Ini hanya salinan file XML aktual yang mendefinisikan SDK ProgressBar android default, tapi saya telah mengubah ID dan Warna. Dokumen aslinya bernama progress_horizontal)
Di Jawa Anda :
Cara menyesuaikan warna progressbar secara terprogram, dan juga membuat warna secara terprogram
EDIT: Saya menemukan waktu untuk menyelesaikan ini dengan benar. Jawaban saya sebelumnya meninggalkan ini agak ambigu.
ProgressBar terdiri dari 3 Drawables dalam sebuah LayerDrawable.
Pada contoh di bawah ini saya akan mengubah warna progress bar utama menjadi cyan.
Contoh itu mengaturnya ke warna solid. Anda dapat mengaturnya ke warna gradien dengan mengganti
dengan
Bersulang.
-Tombak
sumber
ViewUtils
referensi saya denganContext
, sehingga saya tidak perlu melewatiContext
ketika memanggilconvertDpToPixel()
Jika Anda berada di API level 21 atau lebih tinggi, Anda dapat menggunakan atribut XML ini:
sumber
Solusi paling sederhana yang saya temukan adalah sesuatu seperti ini:
Letakkan
styles.xml
file di atas dalamres > values
folder.CATATAN: Jika Anda menggunakan warna aksen lain, maka solusi sebelumnya harus baik untuk digunakan.
API 21 atau LEBIH TINGGI
sumber
sumber
Bagi siapa pun yang mencari cara melakukannya secara terprogram:
Mengatur id ke drawable sangat penting, dan menjaga batas dan status progress bar yang sebenarnya
sumber
Kalian benar-benar membuatku sakit kepala. Apa yang dapat Anda lakukan adalah membuat daftar lapisan Anda dapat ditarik melalui xml terlebih dahulu (artinya latar belakang sebagai lapisan pertama, gambar yang mewakili kemajuan sekunder sebagai lapisan kedua, dan gambar lain yang dapat menggambarkan kemajuan utama sebagai lapisan terakhir), lalu ubah warna pada kode dengan melakukan hal berikut:
Metode ini akan memberikan Anda fleksibilitas terbaik untuk memiliki pengukuran drawable asli Anda dinyatakan pada xml, TANPA MODIFIKASI PADA STRUKTUR PERUSAHAAN SETELAH, terutama jika Anda perlu memiliki folder layar file file xml spesifik, maka hanya memodifikasi HANYA WARNA YANG HANYA melalui kode. Tidak ada instantiating ShapeDrawable baru dari awal apa pun.
sumber
Warna ProgressBar dapat diubah sebagai berikut:
/res/values/colors.xml
/res/values/styles.xml
onCreate:
sumber
Buat sumber daya yang bisa digambar latar belakang apa yang Anda butuhkan, dalam kasus saya saya menamainya bg_custom_progressbar.xml
Kemudian gunakan seperti latar belakang kustom ini
Ini berfungsi baik untuk saya
sumber
Dalam xml:
ViewModel:
sumber
Dengan Perpustakaan Komponen Bahan Anda dapat menggunakan
ProgressIndicator
denganapp:indicatorColor
atribut untuk mengubah warna:Catatan : setidaknya memerlukan versi
1.3.0-alpha01
.Dengan
ProgressBar
Anda dapat mengganti warna menggunakan:dengan:
sumber
Jika Anda ingin mengatur warna progres primer dan sekunder ke progress progress bar secara terprogram di android maka gunakan cuplikan di bawah ini
sumber