我有一个问题的应用程序,并希望显示一个进度条,以显示剩余/已回答的问题。 如果问题得到正确回答,我希望进度条的颜色为绿色,如果答案错误,我希望颜色为红色。
假设有5个问题。例如3个问题,进度条应该是
green|red|red|grey|grey
如果问题1是正确的,2和3是错误的......
答案 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>