两种颜色的进度条

时间:2013-03-15 16:21:09

标签: android progress-bar android-progressbar

我有一个问题的应用程序,并希望显示一个进度条,以显示剩余/已回答的问题。 如果问题得到正确回答,我希望进度条的颜色为绿色,如果答案错误,我希望颜色为红色。

假设有5个问题。例如3个问题,进度条应该是

green|red|red|grey|grey

如果问题1是正确的,2和3是错误的......

2 个答案:

答案 0 :(得分:1)

我找到了一个有效的解决方案..可能不是最好的,所以评论很贴心!

xml-file

    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/info"
      />

    <LinearLayout
        android:id="@+id/take_test_progress_bar_linear_layout"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:layout_below="@+id/info"
        android:orientation="horizontal" >
    </LinearLayout>

    <TextView
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/take_test_progress_bar_linear_layout"
        android:text="@string/stt1"
        />

在我的活动中

oncreate(){
....

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
for(int k=0; k<mTotalQuestionNum; k++)
{
    View v = new View(this);
    v.setBackgroundColor(Color.GRAY);

    params.weight = (float)1.0/( (float) mTotalQuestionNum);
    v.setLayoutParams(params);
    mProgressLayout.addView(v,k);

}
...
}

然后,处理答案时......

if(correct)
    mProgressLayout.getChildAt(mQuestionNum-1).setBackgroundColor(Color.GREEN);
else
    mProgressLayout.getChildAt(mQuestionNum-1).setBackgroundColor(Color.RED);

答案 1 :(得分:0)

正如njzk2在评论中所说,ProgressBar不适合这项工作。

我建议使用LinearLayout

您可以根据需要以编程方式在其中添加Views,使用权重进行相等的水平分布,并且可以在用户进行问题时更改这些Views的背景颜色。< / p>