gpt4 book ai didi

java - 删除水平进度条中的填充

转载 作者:太空狗 更新时间:2023-10-29 23:03:47 25 4
gpt4 key购买 nike

在我们的应用程序中,我们需要一个不确定的进度条,如下所示:

progress bar how it should be

我们可以通过在 ProgressBar 上设置负边距来实现这一点,如下所示:

<ProgressBar
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:marginTop="-7dp"
android:visibility="@{loading ? View.VISIBLE : View.GONE}" />

但是 因为 ConstraintLayout 不支持负边距,所以它看起来像这样:

progress bar with padding

好吧,负边距是一个黑客。让我们用不同的 hack 替换它,好吗?让我们介绍一下我们的自定义 View CustomProgressBar,它扩展了 ProgressBar 并覆盖了它的 onDraw 方法,如下所示:

@Override
protected void onDraw(Canvas canvas) {
int marginTop = dpToPx(7);
canvas.translate(0, -marginTop);
super.onDraw(canvas);
}

但是所有这些闻起来都像是糟糕的代码。必须有更好的解决方案!你会推荐什么?

最佳答案

感觉不像 hack 的解决方案:将巨大的 ProgressBar 包装在较小的 FrameLayout 中。这样 FrameLayout 会限制其高度,但 ProgressBar 仍会完整显示。

<FrameLayout
android:layout_width="match_parent"
android:layout_height="4dp">

<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="32dp"
android:layout_gravity="center" />

</FrameLayout>

关于java - 删除水平进度条中的填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com