如何更改Android进度条的厚度。

10

这个样式应该很容易定制...

我想要一个水平进度条,稍微有点粗(或者可以自定义厚度),颜色与应用程序的颜色相匹配。

如果我执行

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_below="@id/textLoading"
    android:layout_centerHorizontal="true"
    android:indeterminate="true"
     />

进度条是水平的,符合应用的视觉风格...但是太细了...人们需要戴眼镜才能看到它。
如果我执行...
<ProgressBar
        android:id="@+id/progressBar"
        style="android:Widget.ProgressBar.Horizontal"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/textLoading"
        android:layout_centerHorizontal="true"
        android:indeterminate="true"
         />

进度条的厚度很好,但颜色是一种愚蠢的黄色,与这个星球上的任何东西都不匹配。
我如何自定义单个参数?
4个回答

11

有很多方法可以实现您需要的功能:

1- 在您的XML文件中使用android:scaleY="8"

或者通过代码

mProgressBar.setScaleY(3f);

2- style="@android:style/Widget.ProgressBar.Horizontal" 这将使您拥有水平进度条,因此您可以在样式中继承它并按如下方式进行编辑:

<style name="CustomProgressBarHorizontal" parent="android:Widget.ProgressBar.Horizontal">
      <item name="android:progressDrawable">@drawable/custom_progress_bar_horizontal</item>
      <item name="android:minHeight">10dp</item>
      <item name="android:maxHeight">20dp</item>
</style>

10

以下是一个进度条的示例:

 <ProgressBar
        android:id="@+id/progressBar"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:progressDrawable="@drawable/my_progressbar" />

以下是我的_progressbar.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@android:id/background"
    android:gravity="center_vertical|fill_horizontal">
    <shape android:shape="rectangle">
        <corners android:radius="10dp"/>
        <size android:height="20dp"/>
        <solid android:color="@color/blue"/>
    </shape>
</item>
<item
    android:id="@android:id/progress"
    android:gravity="center_vertical|fill_horizontal">
    <scale android:scaleWidth="100%">
        <shape android:shape="rectangle">
            <corners
                android:radius="10dp"
                />
            <size android:height="20dp"/>
            <solid android:color="@color/yellow"/>
        </shape>
    </scale>
</item>
</layer-list>

以下是示例演示: 粗进度条


6
您可以使用Android Material进度条com.google.android.material.progressindicator.LinearProgressIndicator XML示例:
<com.google.android.material.progressindicator.LinearProgressIndicator
    android:id="@+id/progressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progress="45"
    app:indicatorColor="@color/blue_light"
    app:trackColor="#FFFFFF"
    app:trackCornerRadius="5dp"
    app:trackThickness="10dp" />

现在您可以使用app:trackThickness来调整进度条的厚度。 您还可以查看Google的Material Design页面,了解有关Material Progress Bar的更多信息: https://material.io/components/progress-indicators/android#using-progress-indicators

1
为了使用相同的功能替换“<ProgressBar />”为“<com.google.android.material.progressindicator.CircularProgressIndicator />”,以获得圆形进度条。 - Smit Bhanvadia

0

您可以使用以下方式自定义样式:

<ProgressBar
    android:id="@+id/progressBar"
    android:indeterminate="true"
    style="@style/CustomProgressBar"

使用:

<style name="CustomProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
      <item name="minHeight">32dip</item>  <!-- default 16dp -->
      <item name="maxHeight">32dip</item>  <!-- default 16dp -->
</style>

如果您想自定义颜色,请使用:

<ProgressBar
    style="@style/CustomProgressBar"
    android:indeterminate="true"
    android:theme="@style/CustomProgressBarTheme"
    />

使用:

  <style name="CustomProgressBarTheme">
    <item name="colorControlActivated">@color/....</item>
  </style>

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接