Saya menggunakan bilah kemajuan horizontal di aplikasi Android saya, dan saya ingin mengubah warna progresnya (yang secara default adalah Kuning). Bagaimana saya bisa menggunakan code
(bukan XML)?
android
android-progressbar
WhiteTigerK
sumber
sumber
android:indeterminateTint="@android:color/white"
hanya bekerja di API> = 21Jawaban:
Maaf, ini bukan jawabannya, tapi apa yang mendorong persyaratan menetapkannya dari kode? Dan
.setProgressDrawable
harus bekerja jika sudah didefinisikan dengan benarsumber
Untuk ProgressBar horizontal, Anda dapat menggunakan
ColorFilter
juga, seperti ini:Catatan: Ini mengubah tampilan semua bilah progres di aplikasi Anda. Untuk hanya mengubah satu bilah progres spesifik, lakukan ini:
Jika progressBar tidak tentu maka gunakan
getIndeterminateDrawable()
sebagai gantinyagetProgressDrawable()
.Karena Lollipop (API 21) Anda dapat mengatur warna progres:
sumber
getIndeterminateDrawable
jika Anda menggunakan progres tidak pasti.Ini tidak terprogram tetapi saya pikir itu bisa membantu banyak orang.
Saya banyak mencoba dan cara paling efisien adalah menambahkan baris ini ke ProgressBar saya di File .xml:
Jadi pada akhirnya kode ini melakukannya untuk saya:
Solusi ini berfungsi untuk API 21+
sumber
Untuk progressbar (pemintal) tak tentu saya, saya hanya mengatur filter warna pada drawable. Berfungsi bagus dan hanya satu baris.
Contoh di mana pengaturan warna menjadi merah:
sumber
android.graphics.PorterDuff.Mode.MULTIPLY
kePorterDuff.Mode.SRC_IN
dan Anda akan mendapatkan warna hex yang tepat.Ini adalah pertanyaan lama, tetapi menggunakan tema tidak disebutkan di sini. Jika tema default Anda gunakan
AppCompat
,ProgressBar
warnacolorAccent
Anda akan Anda tentukan.Mengubah
colorAccent
juga akan mengubahProgressBar
warna Anda, tetapi ada perubahan juga mencerminkan di banyak tempat. Jadi, jika Anda menginginkan warna yang berbeda hanya untuk warna tertentu,PregressBar
Anda dapat melakukannya dengan menerapkan tema ituProgressBar
:Perpanjang tema default Anda dan timpa
colorAccent
Dan di
ProgressBar
tambahkanandroid:theme
atribut:Jadi akan terlihat seperti ini:
Jadi Anda hanya mengubah a
colorAccent
untuk AndaProgressBar
.Catatan : Menggunakan
style
tidak akan berfungsi. Anda hanya perlu menggunakannyaandroid:theme
. Anda dapat menemukan lebih banyak penggunaan tema di sini: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAHsumber
Semua API
jika menggunakan semua API, buat saja tema dengan gaya
style.xml
dan digunakan dalam proses
API level 21 dan lebih tinggi
jika digunakan di API level 21 dan lebih tinggi cukup gunakan kode ini:
sumber
sesuai beberapa saran, Anda BISA menentukan bentuk dan clipdrawable dengan warna, lalu mengaturnya. Saya memiliki ini berfungsi secara terprogram. Ini adalah bagaimana saya melakukannya ..
Pertama, pastikan Anda mengimpor perpustakaan yang dapat digambar ..
import android.graphics.drawable.*;
Kemudian gunakan kode yang mirip dengan di bawah ini;
sumber
progress.setLevel(2500)
tidak berfungsi untuk saya dan ternyata hasil edit Anda tidak diterima karena alasan tertentu. Terima kasih. +1.Ini bekerja untuk saya:
sumber
jika tak tentu:
sumber
Ini bekerja untuk saya. Ini juga berfungsi untuk versi yang lebih rendah. Tambahkan ini ke syles.xml Anda
Dan gunakan seperti ini di xml
sumber
parent="ThemeOverlay.AppCompat.Light"
Saat ini di 2016 saya menemukan beberapa perangkat pra-Lollipop tidak menghormati
colorAccent
pengaturan, jadi solusi terakhir saya untuk semua API adalah sebagai berikut:Untuk poin bonus, itu tidak menggunakan kode usang. Cobalah!
sumber
wrapDrawable.mutate()
denganDrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
.xml
pengaturan Anda dan juga jika ada sesuatu yang menimpaProgressBar
warnanya.Inilah yang saya lakukan. Bekerja.
ProgressBar:
progressdrawable.xml:
Di sini gunakan gradient untuk mengubah warna sesuka Anda. Dan android: toDegrees = "X" meningkatkan nilai X dan progressbar memutar dengan cepat. Kurangi dan putar lambat. Sesuaikan sesuai dengan kebutuhan Anda.
Sampel:
sumber
Memukul masalah yang sama saat mengerjakan memodifikasi tampilan / nuansa bilah kemajuan default. Berikut ini beberapa info lagi yang diharapkan akan membantu orang :)
a-z0-9_.
(mis. Tanpa huruf kapital!)R.drawable.filename
myProgressBar.setProgressDrawable(...)
, namun Anda tidak bisa hanya merujuk ke tata letak kustomR.drawable.filename
Anda, Anda harus mengambilnya sebagaiDrawable
:sumber
Mungkin ada satu hal yang belum dirujuk dalam jawaban ini:
Jika tema Anda merupakan turunan dari
Theme.AppCompat
,ProgressBar
akan menganggap warna yang Anda tetapkan"colorAccent"
dalam tema Anda.Jadi, menggunakan ..
..akan mewarnai warna ProgressBar secara otomatis ke
@color/custom_color
.sumber
sumber
Anda dapat mencoba mengubah Gaya, Tema, atau menggunakan Android: indeterminateTint = "@ color / yourColor" di mana pun Anda inginkan, tetapi hanya ada satu cara yang dapat dilakukan untuk bekerja pada versi Android SKD:
Jika bilah kemajuan Anda tidak pasti, silakan gunakan:
Jika bilah kemajuan Anda tidak pasti, silakan gunakan:
Sangat menyedihkan bahwa Android berantakan!
sumber
ProgressBar
, tetapi untuk menentukan itu melukis seluruh skala dengan warna.Bagaimana saya melakukannya di ProgressBar horizontal:
sumber
Solusi paling sederhana jika Anda ingin mengubah warna dalam file layout xml, gunakan kode di bawah ini dan gunakan properti indeterminateTint untuk warna yang Anda inginkan.
sumber
Solusi ini bekerja untuk saya:
sumber
Satu lagi hal kecil, solusi tema tidak berfungsi jika Anda mewarisi tema dasar, jadi untuk aplikasi yang ringkas tema Anda seharusnya:
Dan kemudian mengatur ini di tema progress bar
sumber
Untuk mengubah warna ProgressBar horizontal (dalam kotlin):
Untuk mengubah warna ProgressBar yang tidak ditentukan:
Dan akhirnya biasanya mewarnai progressBars pra-lollipop
sumber
Gaya progress bar kustom horisontal:
Untuk mengubah warna latar belakang dan kemajuan bilah kemajuan horizontal.
Menerapkannya pada progress bar dengan mengatur atribut style, untuk style material kustom dan custom progress bar, periksa http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples
sumber
Diposting untuk menambahkan info tentang jawaban PaulieG, karena ateiob meminta saya untuk menjelaskan sesuatu ...
Saya dapat mengatakan bahwa ada (atau paling tidak, pada saat penulisan ketika saya melihat versi kode sumber Android saat ini) bug / masalah / optimasi dalam
ProgressBar
kode yang mengabaikan upaya untuk mengatur kemajuan ke nilai itu sudah di.Setelah menelepon
ProgressBar.setProgressDrawable()
, bilah kemajuan Anda akan kosong (karena Anda mengubah bagian yang dapat digambar).Ini berarti Anda perlu mengatur kemajuan, dan menggambarnya kembali. Tetapi jika Anda hanya mengatur kemajuan ke nilai yang dipertahankan, itu tidak akan melakukan apa-apa.
Anda harus mengaturnya ke 0 terlebih dahulu, kemudian ke nilai "lama" lagi, dan bilah akan menggambar ulang.
Jadi untuk meringkas:
Di bawah ini adalah metode yang saya miliki yang melakukan ini:
Sejauh solusi HappyEngineer, saya pikir itu solusi yang sama, untuk secara manual mengatur "kemajuan" offset. Dalam kedua kasus itu, kode di atas akan bekerja untuk Anda.
sumber
Gunakan android.support.v4.graphics.drawable.DrawableCompat :
sumber
cukup gunakan:
sumber
Untuk ProgressBar gaya horizontal saya gunakan:
Contohnya adalah:
Jika Anda tidak membutuhkan 'kemajuan sekunder', cukup setel value2 ke value1.
sumber
Terapkan gaya khusus ini ke bilah kemajuan.
@ drawable / progress.xml -
Gunakan jenis gambar ini untuk bilah kemajuan.
Untuk hasil yang lebih baik, Anda dapat menggunakan beberapa gambar progres. Dan jangan ragu menggunakan gambar, karena Android Platform sendiri menggunakan gambar untuk progressbar. Kode diekstrak dari SDK :)
sumber
Sesuai muhammad-adil disarankan untuk SDK ver 21 ke atas
dalam XML Bekerja untuk saya, cukup mudah.
sumber
Berikut adalah kode untuk mengubah warna ProgressBar secara terprogram.
sumber
sumber