0

我有一个带有问题的应用程序,并希望显示一个进度条来显示有多少问题还没有回答/回答。如果问题回答正确,我希望进度条的颜色为绿色,如果答案错误,我希望进度条的颜色为红色。

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

green|red|red|grey|grey

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

4

2 回答 2

1

我找到了一个可行的解决方案.. 可能不是最好的,所以评论很受欢迎!

在我的xml 文件中

    <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);
于 2013-03-16T12:25:42.280 回答
0

正如 njzk2 在评论中所说, aProgressBar不是该工作的正确组件。

我建议使用LinearLayout.

您可以根据需要以编程方式在其中添加任意Views数量的内容,使用权重进行相等的水平分布,并且您可以Views在用户处理您的问题时更改它们的背景颜色。

于 2013-03-15T16:31:59.937 回答