【问题标题】:How to create a horizontal loading progress bar?如何创建水平加载进度条?
【发布时间】:2012-11-04 18:49:19
【问题描述】:

在卸载安卓应用,或者做一些配置的时候,会出现这样一个水平进度条,如下图:

@android:style/Widget.ProgressBar.Horizontal不一样的风格。

如何在我自己的应用程序中使用它?

【问题讨论】:

标签: android android-progressbar


【解决方案1】:

用于使用新的进度条

style="?android:attr/progressBarStyleHorizontal"

为旧的灰色进度条使用

style="@android:style/Widget.ProgressBar.Horizontal"

在这个选项中,您可以通过设置 minHeight 来更改高度

完整的 XML 代码为:

<ProgressBar
    android:id="@+id/pbProcessing"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvProcessing"
    android:indeterminateOnly="true"/>

indeterminateOnly 设置为 true 以获得不确定的水平进度条

【讨论】:

  • 这两种风格有什么区别?
【解决方案2】:

布局中的进度条

<ProgressBar 
    android:id="@+id/download_progressbar"
    android:layout_width="200dp"
    android:layout_height="24dp"
    android:background="@drawable/download_progress_bg_track"
    android:progressDrawable="@drawable/download_progress_style"
    style="?android:attr/progressBarStyleHorizontal"
    android:indeterminate="false"
    android:indeterminateOnly="false" />

download_progress_style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/progress">
    <scale 
      android:useIntrinsicSizeAsMinimum="true" 
      android:scaleWidth="100%" 
      android:drawable="@drawable/store_download_progress" />
</item>

【讨论】:

    【解决方案3】:

    现在您可以使用 Material Design 中的 LinearProgressIndicator 轻松创建它,例如进行大量自定义

    <com.google.android.material.progressindicator.LinearProgressIndicator
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true" />
    

    查看 MaterialDesign 链接了解更多信息和代码示例

    https://material.io/components/progress-indicators/android#using-progress-indicators

    【讨论】:

      【解决方案4】:

      只需添加 STYLE 行,您的进度就会变成水平的:

      <ProgressBar
              style="?android:attr/progressBarStyleHorizontal"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:id="@+id/progress"
              android:layout_centerHorizontal="true"      
              android:layout_centerVertical="true"      
              android:max="100" 
              android:progress="45"/>
      

      【讨论】:

      • 它可以工作,但不是动态水平条......需要它在进度中保持不变 45
      • +1 因为这是第一个对我有用的选项。如何设置进度颜色(不是背景)?
      • @TaslimOseni 您可以通过 progress.setProgressTintList(ColorStateList.valueOf(Color.GREEN)); 设置进度条颜色;
      【解决方案5】:

      为我工作,可以尝试相同的

      <ProgressBar
          android:id="@+id/determinateBar"
          android:indeterminateOnly="true"
          android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
          android:indeterminateDuration="10"
          android:indeterminateBehavior="repeat"
          android:progressBackgroundTint="#208afa"
          android:progressBackgroundTintMode="multiply"
          android:minHeight="24dip"
          android:maxHeight="24dip"
          android:layout_width="match_parent"
          android:layout_height="10dp"
          android:visibility="visible"/>
      

      【讨论】:

        【解决方案6】:

        我的手机上是Widget.ProgressBar.Horizontal,如果我设置android:indeterminate="true"

        【讨论】:

        • 另外,请务必将高度设置为wrap_content(或更大的值),我已经花了将近一个小时来弄清楚为什么进度条没有显示... -.-
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多