删除水平进度条中的内边距
2022-09-02 08:59:33
在我们的应用程序中,我们需要一个不确定的进度条,如下所示:
我们可以通过在进度条上设置负边距来实现此目的,如下所示:
<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 不支持负边距,因此它看起来像这样:
好吧,负边距是一个黑客攻击。让我们用不同的黑客来代替它,好吗?让我们介绍一下我们的 自定义视图 ,它扩展并覆盖其方法,如下所示:CustomProgressBar
ProgressBar
onDraw
@Override
protected void onDraw(Canvas canvas) {
int marginTop = dpToPx(7);
canvas.translate(0, -marginTop);
super.onDraw(canvas);
}
但所有这些都闻起来像是糟糕的代码。必须有更好的解决方案!你会推荐什么?