0

我在这里遇到了一个非常棘手的问题,我已经尝试了所有我能找到的方法,但它仍然无济于事。

我需要这样的东西:

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

4

1 回答 1

0

潜在问题 1

很难确定您的实际问题是什么。我假设您的百分比标志不在所有屏幕上的正确位置。我注意到您使用 DP 在 XML 中进行测量,但使用 PX 来调整代码中的参数。

尝试在代码中使用 DP 进行测量(例如 20 和像素级别)。您可以使用以下

int valueInDP= (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, YOURVALUE, getResources().getDisplayMetrics());

其中YOURVALUE是您希望转换为 DP 的值。


潜在问题 2

如果您根本没有看到任何东西,那么您的问题可能出在这条线上

progressDrawableImageView.getWidth();

因为在 onCreate() 中获取 imageView 宽度似乎存在问题。这可能与您相关,也可能与您无关,但很难说。请参阅此链接以解决问题:How to get the width and height of an Image View in android?

如果定位不是问题,则必须将问题编辑为更具体。

于 2013-08-30T18:40:56.030 回答