【问题标题】:How to change the progressBar color and height in Android如何在Android中更改progressBar颜色和高度
【发布时间】:2017-11-27 02:21:36
【问题描述】:

我正在使用以下 xml 布局:

<ProgressBar
    android:id="@+id/totalScoreProgress"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:layout_marginTop="29dp"
    android:maxHeight="30dp"
    android:minHeight="30dp"
    android:indeterminateTint="@color/grey"
    android:max="30"/>

<TextView
    android:id="@+id/bestResultText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/totalScoreProgress"
    android:text="Best Result : 0"
    android:textSize="15sp" />

和java代码:

ProgressBar totalScoreProgress = (ProgressBar) findViewById(R.id.totalScoreProgress);
totalScoreProgress.setProgress(30);

这些是我为带有文本的灰色进度条所做的努力,我附上了预期和实际输出的image。请指导我在哪里犯了错误。

谢谢。

【问题讨论】:

    标签: android android-layout android-activity android-progressbar


    【解决方案1】:

    问题的确切解决方案是:

    1. 为xml布局中的进度条定义一个自定义progress_bar.xml
    2. 在 java 代码中,应用 bringToFront() 将 bestScoreText 置于 totalScoreProgress ProgressBar 之上

    Xml 布局

    <ProgressBar
        android:id="@+id/totalScoreProgress"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:theme="@style/CustomProgressBarHorizontal"
        android:progressDrawable="@drawable/progress_bar"
        android:max="30"/>
    
    <TextView
        android:id="@+id/bestResultText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/totalScoreProgress"
        android:text="Best Result : 0"
        android:textSize="15sp" />
    

    progress_bar.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/progress">
            <clip>
                <shape>
                    <corners android:radius="5dip" />
    
                    <solid android:color="@color/grey" />
                </shape>
            </clip>
        </item>
    </layer-list>
    

    Java 代码

    ProgressBar totalScoreProgress = (ProgressBar) findViewById(R.id.totalScoreProgress);
    totalScoreProgress.setProgress(30);
    TextView bestScoreText = (TextView) findViewById(R.id.bestResultText);
    bestScoreText.bringToFront();
    

    【讨论】:

      【解决方案2】:

      您还可以使用外部库进行进度条:https://github.com/lopspower/CircularProgressBar 您可以管理高度和颜色等等。

      【讨论】:

        【解决方案3】:

        在您的风格中使用以下主题更改进度条的高度

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

        要更改进度条的颜色,请创建一个可绘制的 progress_bar.xml 文件

        <?xml version="1.0" encoding="utf-8"?>
        

        <item android:id="@android:id/secondaryProgress">
            <clip>
                <shape>
                    <corners android:radius="5dip" />
        
                    <solid android:color="#f58233" />
                </shape>
            </clip>
        
            <color android:color="#f58233" />
        </item>
        <item android:id="@android:id/progress">
            <clip>
                <shape>
                    <corners android:radius="5dip" />
        
                    <solid android:color="#f58233" />
                </shape>
            </clip>
        
            <color android:color="#f58233" />
        </item>
        
        </layer-list>
        

        像这样在你的进度条中应用这个

        <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="200dp"
                android:layout_height="3dip"
                android:theme="@style/CustomProgressBarHorizontal"
                android:progressDrawable="@drawable/progress_bar" />
        

        【讨论】:

          【解决方案4】:

          您需要在 xml 中指定可绘制资源。

          例如progress_background.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">
                  <shape>
                      <corners
                          android:radius="5dip"/>
                      <solid android:color="@color/grey"/>
                  </shape>
              </item>
              <item
                  android:id="@android:id/progress">
                  <clip>
                      <shape>
                          <corners
                              android:radius="5dip"/>
                          <solid android:color="@color/blue"/>
                      </shape>
                  </clip>
              </item>
          </layer-list>
          

          然后像这样使用它:

          <ProgressBar
                      android:id="@+id/pbLoadingProgress"
                      style="?android:attr/progressBarStyleHorizontal"
                      android:layout_width="match_parent"
                      android:layout_height="@dimen/your_progress_bar_height"
                      android:layout_gravity="bottom"   
                      android:progressDrawable="@drawable/progress_background" />
          

          【讨论】:

            猜你喜欢
            • 2011-02-13
            • 1970-01-01
            • 2011-02-07
            • 2011-06-08
            • 2015-11-10
            • 2012-11-01
            • 2012-11-08
            • 2010-12-01
            • 1970-01-01
            相关资源
            最近更新 更多