我想在ProgressBar
中设置默认背景,这与我们以编程方式设置的背景不同。
对于如下所示的检查图像,其进度非常小,因此用户无法查看写在其上的进度数据。所以我希望默认任何颜色背景在每个进度条后面,如下图所示。
代码:
adapter = new SimpleAdapter(this, aaReportData,
R.layout.report_card1, new String[] { "Topic", "Accuracy",
"Accuracy1" }, new int[] { R.id.tvTopic,
R.id.pbTopicAccuracy, R.id.tvAccuracy });
adapter.setViewBinder(new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
if (view.getId() == R.id.pbTopicAccuracy) {
int value = Integer.parseInt(data.toString());
((ProgressBar) view).setProgress(value);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
value, 30);
params.leftMargin = 185;
params.topMargin = 3;
((ProgressBar) view).setLayoutParams(params);
if (value >= 0 && value <= 10) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_010));
}
if (value > 10 && value <= 20) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_1020));
}
if (value > 20 && value <= 30) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_2030));
} else if (value > 30 && value <= 40) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_3040));
} else if (value > 40 && value <= 50) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_4050));
} else if (value > 50 && value <= 60) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_5060));
} else if (value > 60 && value <= 70) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_6070));
} else if (value > 70 && value <= 80) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_7080));
} else if (value > 80 && value <= 90) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_8090));
} else if (value > 90 && value <= 100) {
((ProgressBar) view)
.setProgressDrawable(getResources()
.getDrawable(
R.drawable.progress_90100));
}
return true;
}
return false;
}
});
lvReportData.setAdapter(adapter);
可绘制: progress_010
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="90"
android:endColor="#A82222"
android:startColor="#8E0000"
android:type="linear" />
<corners
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp" />
</shape>
答案 0 :(得分:1)
尝试下面的Drawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Define background color gradient -->
<item android:id="@android:id/background">
<shape>
<gradient
android:angle="90"
android:centerColor="#cccccc"
android:centerY="1.0"
android:endColor="#bbbbbb"
android:startColor="#dddddd" />
</shape>
</item>
<!-- Define progress bar color gradient -->
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:angle="270"
android:centerColor="#b4ad9e"
android:centerY="1.0"
android:endColor="#867961"
android:startColor="#e6d6bd" />
</shape>
</clip>
</item>
同时创建主题 res/values/styles.xml
<style name="ProgressBar.Horizontal.Indeterminate" parent="@android:style/Widget.Holo.Light.ProgressBar.Horizontal">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:indeterminate">true</item>
</style>
并设置为您的进度条,如
<ProgressBar
android:id="@+id/progress_bar"
style="@style/ProgressBar.Horizontal.Indeterminate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="30dp" />
让我知道。当然,您可以根据需要更改渐变颜色。
答案 1 :(得分:0)
您可以使用参数android:progressDrawable="@drawable/ic_launcher"
或使用自定义@drawable
。
在drawable文件夹中创建 my_progress.xml ,并使用#000000
等颜色代码。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- background line-->
<item android:id="@android:id/background">
<shape>
<gradient
android:startColor=""
android:centerColor=""
android:centerY="1.0"
android:endColor=""
android:angle="270"
/>
</shape>
</item>
<!-- status line -->
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor=""
android:centerColor=""
android:centerY="1.0"
android:endColor=""
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
在布局xml中,您需要输入:
<ProgressBar
android:layout_width="385dp"
android:layout_height="160dp"
style="android:style/Widget.ProgressBar.Horizontal"
android:id="+id/progressBar"
android:progressDrawable="@drawable/my_progress"
android:background="@drawable/ic_launcher"
android:max="100"
android:layout_gravity="center"/>