如何根据android中的总分钟数设置水平进度条?

时间:2017-03-30 06:48:03

标签: android android-progressbar

您好我想根据总分钟设置水平进度条宽度。

例如

总小时数7小时30分钟 - > 450分钟

XML

<ProgressBar
   android:id="@+id/progress_bar_total_sleep"
   style="@style/SleepProgressFill"
   android:layout_width="270dp"
   android:layout_height="wrap_content"/>

请提出任何建议

4 个答案:

答案 0 :(得分:0)

int minutes=450;     
int total = (int) ((timePassed/ minutes) * 100);
progressbar.setProgress(total);

答案 1 :(得分:0)

我认为你应该尝试使用SeekBar,

<SeekBar
    android:id="@+id/seekbar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:indeterminateDrawable="your drawable"
    android:progressDrawable="your drawable"
    android:thumb="your drawable" />

你必须设置你从mediaPlayer获取持续时间的持续时间id,或者只是获取持续时间并将其放在这里:

seekBar.setMax(mediaPlayer.getDuration());

和听众:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean
fromUser) { 

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {


}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}

这是你想要的或我不理解你......

答案 2 :(得分:0)

试试这种方式

progressBar.setLayoutParams(new LinearLayout.LayoutParams(100, 10));

这里100是宽度,10是高度

而不是100将您的总分钟数作为整数

答案 3 :(得分:0)

  1. 您可以使用MAXProgressBar使用属性ProgressBar.setMax(MAX_VALUE)中的JAVA方法设置XML android:max="MAX_VALUE"的值。

  2. 您需要设置Progress ProgressBar的值以显示进度。您可以使用ProgressBar.setProgress(PROGRESS_VALUE)中的方法JAVAXML使用属性android:progress="PROGRESS_VALUE"来完成此操作。

  3. 以下是一个示例: (From XML)

    <ProgressBar
        android:id="@+id/progress_bar_total_sleep"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:max="1000"
        android:progress="450"
        style="?android:attr/progressBarStyleHorizontal" />
    

    如果要以编程方式更改MAX和Progress值,请尝试以下操作:

    ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar_total_sleep);
    
    // Max Minute
    progressBar.setMax(1000);
    // Progress Minute
    progressBar.setProgress(450);
    

    <强>输出:

    enter image description here

    希望这会有所帮助〜