无法使Vertical ProgressBar更大

时间:2016-04-26 14:54:12

标签: android android-progressbar

我正在尝试显示一个垂直的ProgressBar。 我已经开始使用此GitHub中的VerticalProgressBar:https://github.com/halzhang/Android-VerticalProgressBar

但是这个解决方案不适用于其中一个测试设备,只能在一个测试设备上运行。栏不显示进度。

所以,我只是简单地创建一个基本的ProgressBar并旋转它:

 <ProgressBar
    android:id="@+id/pb_time_remaining"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:max="1005"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_centerHorizontal="true"
    android:layout_alignParentTop="true"
    android:rotation="270"
    android:indeterminate="false"/>

Vertical ProgressBar

这项工作非常完美......但我的需求非常精确。 当我这样做时,进度不会显示在组件的所有高度上,而是仅显示在上面屏幕上可以看到的高度的固定百分比。我发现这个%是由组件的宽度决定的,这就是组件设置为'match_parent'宽度的原因。

这个条件在水平方面并不烦人,因为宽度表示你想要的进度大小。 我需要它适合整个屏幕,我不能设置更大的高度/宽度,因为它在'match_parent'。

此外,正如您所看到的,没有填充,边距或其他任何内容..

有人有任何提示让ProgressBar完全适合屏幕的高度,所以要让它比实际大吗?

提前致谢

编辑:

ProgressBar是活动主要RelativeLayout的直接子项。

1 个答案:

答案 0 :(得分:0)

我会在相应的onCreate()方法中尝试以下内容:

LayoutParams params = null;
ProgressBar progress = (ProgressBar)findViewById(R.id.progressBar);
Map<String, Integer> map = deriveMetrics2(this);
params = button.getLayoutParams();
params.height = 20; //use appropriate value here. 
params.width = map.get("screenHeight");
progress.setLayoutParams(params);

public Map<String, Integer> deriveMetrics(Activity activity) {
    try {
        DisplayMetrics metrics = new DisplayMetrics();

        if (activity != null) {
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        }

        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("screenWidth", Integer.valueOf(metrics.widthPixels));
        map.put("screenHeight", Integer.valueOf(metrics.heightPixels));
        map.put("screenDensity", Integer.valueOf(metrics.densityDpi));

        return map;
    } catch (Exception err) {
        ; // just use zero values
        return null;
    }
}

希望它有所帮助。

P.S。当然在onCreate ...

之外声明函数