【问题标题】:Show ProgressBar over Dialog Fragment在对话框片段上显示进度条
【发布时间】:2019-03-07 16:29:54
【问题描述】:

我有一个扩展 DialogFragment 的类,我想在其中显示一个全屏加载程序。问题是ProgressBar 显示在DialogFragment 后面,而不是它上面,我想要什么。

为了显示ProgressBar,我使用了library,我只是将SpinKitView 放在DialogFragment 布局中

.

【问题讨论】:

  • 你能分享你的DialogFragment代码吗?

标签: android kotlin progress-bar android-alertdialog android-dialogfragment


【解决方案1】:

我知道这有点晚了,但我想我会在这里给出一个答案,以便它可以帮助未来陷入困境的人。 @ghita 如果您可以将此标记为解决您的问题的原因吗?

 <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<Button android:id="@+id/button"
    android:layout_width="143dp"
    android:layout_height="168dp"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.432" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:elevation="27dp"
    app:layout_constraintBottom_toTopOf="@+id/button"
    app:layout_constraintEnd_toEndOf="@+id/button"
    app:layout_constraintStart_toStartOf="@+id/button"
    app:layout_constraintTop_toBottomOf="@+id/button"/>

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

    【解决方案2】:

    您可以使用带有 2 个视图的 frameLayout(这样 1 个视图在另一个视图之上)或约束布局,这是使用约束布局的示例:

       <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:id="@+id/button"
            android:layout_width="143dp"
            android:layout_height="168dp"
            android:text="Button"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.432" />
    
        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toTopOf="@+id/button"
            app:layout_constraintEnd_toEndOf="@+id/button"
            app:layout_constraintStart_toStartOf="@+id/button"
            app:layout_constraintTop_toBottomOf="@+id/button"
            />
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    【讨论】:

    • 那么,在我的 DialogFragment 布局中包含progressBar?这就是我所做的,但它没有显示出来。我也使用 SpinKitView ,但它扩展了 Progressbar
    • 是的,您需要在对话框中添加progressBar。如果你已经这样做了并且你没有看到你的progressBar,那么你只需转到你的XML并在位置交换你的2个视图(这样你的进度条现在将在你的布局上方)
    • 您也可以使用elevation 属性,默认情况下对话框的高度为24dp,因此将进度加载条高度设置为26 到30 之类的值。这是一个显示示例的链接material.io/design/environment/…
    • @Vahalaru 确定对话框得到了提升,但请记住,两个视图都在相同的布局(对话框的)内,但是关于高度的好提示 - 很好的思维方式
    • 真正忘记了这一点。这种方法需要花费一些精力,因为您必须为这些视图设置自定义高度才能使其正确。但是当我不顾一切地想要做某事时,我做了更疯狂的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多