我在这里遇到了一个非常棘手的问题,我已经尝试了所有我能找到的方法,但它仍然无济于事。
我需要这样的东西:
AprogressBar
带有一个包含进度数据的文本,如果它不适合,这个文本可以在进度级别之外,但如果它适合(获取它)。还有一个带有进度百分比的标志,正好在进度级别(真正的问题)之下。
样本:
https://dl.dropboxusercontent.com/u/7675841/orange.png
如需更多示例,请将“orange.png”更改为“red.png”和“green.png”。
我做了这样的事情:http: //blog.mediarain.com/2011/04/android-custom-progressbar-with-rounded-corners/
TextView
为 中的文本添加一个progressBar
:
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<RelativeLayout
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp" >
<ImageView
android:id="@+id/track_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/app_name"
android:minHeight="25dp" />
<ImageView
android:id="@+id/progress_drawable_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:contentDescription="@string/app_name"
android:minHeight="25dp" />
<TextView
android:id="@+id/progress_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textColor="#FFF"
android:textSize="14sp"
android:textStyle="bold" />
</RelativeLayout>
为了设置文本输入/输出进度,我这样做了:
double percent = (double) value / (double) max;
int level = (int) Math.floor(percent * 10000);
drawable.setLevel(level);
double pixelLevel = percent * progressDrawableImageView.getWidth();
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) txt
.getLayoutParams();
if (pixelLevel - 20 < bounds.width()) {
params.leftMargin = (int) pixelLevel + 20;
} else {
params.leftMargin = (int) pixelLevel - bounds.width() - 10;
}
txt.setLayoutParams(params);
这很漂亮,但不适用于百分比标志。或者至少不适用于所有屏幕尺寸和密度。
项目:“相同的保管箱链接”/RoundedProgressSampleCustom.zip
谢谢你帮助我。
PS:抱歉不能发布超过2个链接:c