По умолчанию ProgressBar имеет определенные отступы над и под самой полосой. Есть ли способ удалить эту прокладку, чтобы полоса оставалась только в конце?
android
android-progressbar
abergmeier
источник
источник
maxHeight
не работает.android:minHeight="4dp"
Ответы:
Я использую следующее решение этой проблемы.
источник
android:layout_marginTop="-6dp"
работал у меня. Интересно, зависит ли это от устройства? Я тестировал только Xperia Z1Framelayout
(как в этом ответе - лучшее решение и не зависит от размера / типа / версии телефона /Вот как я использовал ответ Юозаса:
высота у меня
ProgressBar
4dp. Таким образом , я создалFrameLayout
с высотой 4ДПОМ и установитеlayout_gravity
изProgressBar
вcenter
. Это работает как шарм.источник
В итоге я решил использовать специальную библиотеку для решения этой проблемы. Большинство других решений работают, но результаты неодинаковы на разных устройствах.
Чтобы добавить как зависимость Gradle:
Чтобы добавить в макет ProgressBar без внутреннего отступа:
app:mpb_useIntrinsicPadding="false"
делает свое дело. Дополнительные сведения см. На странице GitHub .источник
Если кому-то все еще нужна помощь, попробуйте следующее:
Здесь индикатор выполнения находится внутри ConstraintLayout , а атрибуты constraintTop_toTopOf и constraintBottom_toTopOf должны быть применены к одному и тому же элементу (в данном случае это рекомендация).
*** ПОЛНОЕ РЕШЕНИЕ: ***
источник
Можно нарисовать вертикально центрированный ProgressBar внутри родительского элемента, который будет вырезать отступы. Поскольку ProgressBar не может рисовать больше, чем родительский, мы должны создать большой родительский элемент, который будет помещен в представление отсечения.
источник
Чтобы удалить вертикальное заполнение
ProgressBar
, вы можете сделатьProgressBar
Пример содержит 1 wrap_content
ProgressBar
, 1 8dpProgressBar
, 1 100dpProgressBar
источник
Полное решение этой проблемы было бы следующим. На всякий случай, если кому-то понадобятся фрагменты кода, я так и сделал.
Вот прогресс_indeterminate_horizontal_holo.xml
Ресурсы стилей скопированы в мой локальный файл стилей.
И, наконец, установите минимальную высоту на 4dp в моем локальном файле макета.
источник
<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
Я столкнулся с той же проблемой при использовании индикатора выполнения в горизонтальном стиле.
Основная причина заключается в том, что 9-патч по умолчанию, отображаемый для индикатора выполнения: (progress_bg_holo_dark.9.png), имеет несколько вертикальных прозрачных пикселей в качестве заполнения.
Окончательное решение, которое сработало для меня: настроить отображение прогресса, мой пример кода следующим образом:
custom_horizontal_progressbar_drawable.xml
фрагмент макета:
источник
Один из приемов - добавить отрицательные поля к индикатору выполнения.
Ниже приведен пример кода XML, если он находится в верхней части экрана:
источник
Ответ Субина, кажется, единственный (в настоящее время), который не является хрупким взломом, который может сломаться в будущих выпусках Android ProgressBar.
Но вместо того, чтобы тратить время на выделение ресурсов, их изменение и поддержку на неопределенный срок, я решил использовать библиотеку MaterialProgressBar , которая делает это за нас:
В build.gradle:
У этого проекта есть хорошая демонстрация, которая показывает различия между ним и встроенным ProgressBar.
источник
если кто-то все еще ищет решение - проверьте этот комментарий
установите минимальную высоту 4 dp
-
источник
Я использую minHeight и maxHeigh. Это помогает для разных версий Api.
Необходимо использовать оба. Api 23 отлично работает с
Но более низкие версии Api увеличивают высоту индикатора выполнения до maxHeight в этом случае.
источник
Попробуйте следующее:
... а затем настройте индикатор выполнения в соответствии с вашими потребностями, поскольку он первоначально будет отображать полосу среднего размера с желтым оттенком прогресса с сероватым оттенком фона прогресса. Также обратите внимание, что нет вертикального отступа.
источник
Используйте это внутри Linearlayout
источник
добавление android: progressDrawable в список слоев, определенный в drawable, устранило проблему для меня. Он работает, маскируя полосу прогресса в настраиваемом редактируемом
пример реализации, описанный на https://stackoverflow.com/a/4454450/1145905
источник
Я использую,
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
и было довольно легко избавиться от полей. Этот стиль:Я просто изменил минимальную / максимальную высоту:
источник
Нет необходимости загружать какой-либо новый модуль или даже размещать FrameLayout вокруг индикатора выполнения. Это все просто хаки. Всего 2 шага:
В вашем Any.xml
progress_horizontal.xml, меняйте значения как хотите.
Не любите закругленные углы?
Удалить угловой радиус
Не нравятся цвета? Поменять цвета и т.д. Готово!
Как правило, это шаги, чтобы изменить код всего, что вам не нравится. Просто найдите исходный код и подумайте, что нужно изменить. Если вы следуете исходному коду ProgressBar, вы найдете файл с именем progress_horizontal.xml, на который он ссылается. В основном, как я решаю все свои проблемы с XML.
источник
источник
источник
Просто используйте Material ProgressIndicator, у которого нет скрытых полей.
источник
Простое решение без уловок, совместимое с любой версией Android и не требующее внешних библиотек, - это имитация
ProgressBar
двухViews
внутреннихLinearLayout
. Вот что у меня получилось. Выглядит довольно аккуратно, и этот подход довольно гибкий - вы можете анимировать его разными способами, добавлять текст и т. Д.Планировка:
Код:
Результат (с добавлением некоторой высоты):
источник
Лучшее решение должно быть
Нет обходного пути и работает как шарм.
источник
minHeight
предопределенном значении, превышающем 0 (например, 32dp, возможно). Изменив это свойство, вы получите другой вид.