Secara default ProgressBar memiliki padding tertentu di atas dan di bawah bar itu sendiri. Apakah ada cara untuk menghapus bantalan ini sehingga hanya memiliki bilah pada akhirnya?
android
android-progressbar
abergmeier.dll
sumber
sumber
maxHeight
, tidak berfungsi.android:minHeight="4dp"
Jawaban:
Saya menggunakan berikut ini sebagai solusi untuk masalah ini.
sumber
android:layout_marginTop="-6dp"
bekerja untuk saya. Bertanya-tanya apakah itu tergantung pada perangkat? Saya hanya menguji Xperia Z1Framelayout
(seperti dalam jawaban ini adalah solusi yang lebih baik dan tidak tergantung pada ukuran / jenis ponsel / versi osBeginilah cara saya menggunakan jawaban Juozas:
ketinggian saya
ProgressBar
adalah 4dp. Jadi saya membuatFrameLayout
dengan tinggi 4dp dan mengaturlayout_gravity
dariProgressBar
kecenter
. Ini bekerja seperti pesona.sumber
Saya akhirnya menggunakan perpustakaan khusus untuk menyelesaikan masalah ini. Sebagian besar solusi lain berfungsi tetapi hasilnya tidak konsisten di berbagai perangkat.
Untuk menambahkan sebagai ketergantungan gradle:
Untuk menambahkan ProgressBar tanpa padding intrinsik ke tata letak Anda:
app:mpb_useIntrinsicPadding="false"
melakukan triknya. Untuk lebih jelasnya lihat halaman GitHub .sumber
Jika seseorang masih membutuhkan bantuan dapat mencoba ini:
Di sini, progress bar adalah dalam ConstraintLayout , dan constraintTop_toTopOf dan constraintBottom_toTopOf atribut harus diterapkan untuk unsur yang sama (dalam hal ini, itu adalah pedoman).
*** SOLUSI LENGKAP: ***
sumber
Dimungkinkan untuk menggambar ProgressBar yang berpusat secara vertikal di dalam induk yang akan memotong padding. Karena ProgressBar tidak dapat menggambar dirinya lebih besar dari induk, kita harus membuat induk besar untuk ditempatkan di dalam tampilan kliping.
sumber
Untuk menghilangkan vertial padding
ProgressBar
dapat dilakukan dengan caraProgressBar
Contoh berisi 1 wrap_content
ProgressBar
, 1 8dpProgressBar
, 1 100dpProgressBar
sumber
Solusi lengkap untuk masalah ini adalah sebagai berikut. Untuk berjaga-jaga jika seseorang membutuhkan fragmen kode, inilah yang saya lakukan.
Ini adalah progress_indeterminate_horizontal_holo.xml
Sumber daya gaya disalin ke file gaya lokal saya.
Dan terakhir, setel tinggi min menjadi 4dp di file tata letak lokal saya.
sumber
<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
Saya menemui masalah yang sama saat menggunakan progressbar dengan gaya Horizontal.
Akar penyebabnya adalah 9-patch drawable default untuk progress bar: (progress_bg_holo_dark.9.png) memiliki beberapa piksel transparan vertikal sebagai padding.
Solusi terakhir yang berhasil untuk saya: sesuaikan kemajuan drawable, kode sampel saya sebagai berikut:
custom_horizontal_progressbar_drawable.xml
cuplikan tata letak:
sumber
Salah satu triknya adalah menambahkan margin negatif ke bilah kemajuan Anda.
Di bawah ini adalah contoh kode XML, dengan asumsi itu ada di atas layar Anda:
sumber
Jawaban Subin tampaknya menjadi satu-satunya (saat ini) yang bukan merupakan subjek peretasan rapuh yang akan rusak dalam rilis Android ProgressBar di masa mendatang.
Tetapi daripada mengalami kesulitan memecah sumber daya, memodifikasinya, dan mempertahankannya tanpa batas, saya memilih untuk menggunakan pustaka MaterialProgressBar , yang melakukannya untuk kita:
Dalam build.gradle:
Proyek itu memiliki demo bagus yang menunjukkan perbedaan antara itu dan ProgressBar bawaan.
sumber
jika seseorang masih mencari solusi - periksa komentar ini
atur tinggi minimum menjadi 4 dp
-
sumber
Saya menggunakan minHeight dan maxHeigh. Ini membantu untuk versi Api yang berbeda.
Ini perlu menggunakan keduanya. Api 23 bekerja dengan baik
Tetapi versi Api yang lebih rendah meningkatkan tinggi bilah kemajuan ke maxHeight dalam kasus itu.
sumber
Coba yang berikut ini:
... lalu konfigurasikan bilah kemajuan sesuai kebutuhan Anda karena pada awalnya akan menampilkan bilah berukuran sedang dengan warna kemajuan berwarna kuning dengan warna latar belakang kemajuan keabu-abuan. Juga, perhatikan bahwa tidak ada bantalan vertikal.
sumber
Gunakan seperti ini, di dalam Linearlayout
sumber
menambahkan android: progressDrawable ke daftar lapisan yang ditentukan di drawable memperbaiki masalah saya. Ia bekerja dengan menutupi bilah proses dalam drawable khusus
contoh implementasi dijelaskan di https://stackoverflow.com/a/4454450/1145905
sumber
Saya menggunakan
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
dan cukup mudah untuk menghilangkan margin. Gaya itu adalah:Saya baru saja mengesampingkan tinggi min / maks:
sumber
Tidak perlu mengunduh modul baru atau bahkan meletakkan FrameLayout di sekitar Progress Bar. Ini semua hanyalah retasan. Hanya 2 langkah:
Di apapun.xml Anda
progress_horizontal.xml, Ubah nilainya sesuka Anda.
Tidak suka sudut membulat?
Hapus radius sudut
Tidak suka warnanya? Ubah warna, dll. Selesai!
Umumnya, ini adalah langkah-langkah untuk mengubah kode apa pun yang tidak Anda sukai. Temukan saja kode sumbernya dan cari tahu apa yang harus diubah. Jika Anda mengikuti kode sumber ProgressBar, Anda akan menemukan file bernama progress_horizontal.xml yang direferensikan. Pada dasarnya bagaimana saya menyelesaikan semua masalah XML saya.
sumber
sumber
sumber
Gunakan saja Material ProgressIndicator yang tidak memiliki margin tersembunyi.
sumber
Solusi tanpa trik sederhana yang kompatibel dengan versi Android apa pun dan tidak memerlukan pustaka eksternal adalah memalsukan
ProgressBar
duaViews
di dalamnyaLinearLayout
. Inilah yang akhirnya saya dapatkan. Terlihat cukup rapi dan pendekatan ini cukup fleksibel - Anda dapat menganimasikannya dengan cara yang funky, menambahkan teks, dll.Tata Letak:
Kode:
Hasil (dengan beberapa ketinggian ditambahkan):
sumber
Solusi terbaik seharusnya
Tidak ada solusi dan berfungsi seperti pesona.
sumber
minHeight
yang lebih besar dari 0 (katakanlah 32dp mungkin) yang telah ditentukan sebelumnya. Dengan mengubah properti ini, Anda mendapatkan tampilan yang berbeda.