我有一个带有问题的应用程序,并希望显示一个进度条来显示有多少问题还没有回答/回答。如果问题回答正确,我希望进度条的颜色为绿色,如果答案错误,我希望进度条的颜色为红色。
假设有5个问题。例如 3 个问题后,进度条应该是
green|red|red|grey|grey
如果问题 1 是正确的,而问题 2 和 3 是错误的......
我有一个带有问题的应用程序,并希望显示一个进度条来显示有多少问题还没有回答/回答。如果问题回答正确,我希望进度条的颜色为绿色,如果答案错误,我希望进度条的颜色为红色。
假设有5个问题。例如 3 个问题后,进度条应该是
green|red|red|grey|grey
如果问题 1 是正确的,而问题 2 和 3 是错误的......
我找到了一个可行的解决方案.. 可能不是最好的,所以评论很受欢迎!
在我的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);
正如 njzk2 在评论中所说, aProgressBar
不是该工作的正确组件。
我建议使用LinearLayout
.
您可以根据需要以编程方式在其中添加任意Views
数量的内容,使用权重进行相等的水平分布,并且您可以Views
在用户处理您的问题时更改它们的背景颜色。