我正在尝试显示一个垂直的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"/>
这项工作非常完美......但我的需求非常精确。 当我这样做时,进度不会显示在组件的所有高度上,而是仅显示在上面屏幕上可以看到的高度的固定百分比。我发现这个%是由组件的宽度决定的,这就是组件设置为'match_parent'宽度的原因。
这个条件在水平方面并不烦人,因为宽度表示你想要的进度大小。 我需要它适合整个屏幕,我不能设置更大的高度/宽度,因为它在'match_parent'。
此外,正如您所看到的,没有填充,边距或其他任何内容..
有人有任何提示让ProgressBar完全适合屏幕的高度,所以要让它比实际大吗?
提前致谢
编辑:
ProgressBar是活动主要RelativeLayout的直接子项。
答案 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 ...
之外声明函数