Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法使垂直进度条变大_Android_Android Progressbar - Fatal编程技术网

Android 无法使垂直进度条变大

Android 无法使垂直进度条变大,android,android-progressbar,Android,Android Progressbar,我试图显示一个垂直进度条。 我已经从这个GitHub开始使用VerticalProgressBar: 但是这个解决方案在一个测试设备上不起作用,而且只在一个测试设备上起作用。该栏不显示进度 因此,我只需创建一个基本进度条并旋转它: <ProgressBar android:id="@+id/pb_time_remaining" android:layout_width="match_parent" android:layout_height="match_pare

我试图显示一个垂直进度条。 我已经从这个GitHub开始使用VerticalProgressBar:

但是这个解决方案在一个测试设备上不起作用,而且只在一个测试设备上起作用。该栏不显示进度

因此,我只需创建一个基本进度条并旋转它:

 <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的直接子级。

我将在相应的onCreate()方法中尝试以下操作:

LayoutParams params=null;
ProgressBar进度=(ProgressBar)findViewById(R.id.ProgressBar);
Map Map=deriveMetrics2(本);
params=button.getLayoutParams();
参数高度=20//在这里使用适当的值。
params.width=map.get(“屏幕高度”);
进度。setLayoutParams(参数);
公共地图衍生指标(活动){
试一试{
DisplayMetrics=新的DisplayMetrics();
if(活动!=null){
activity.getWindowManager().getDefaultDisplay().getMetrics(度量);
}
Map Map=newhashmap();
map.put(“屏幕宽度”,Integer.valueOf(metrics.widthPixels));
map.put(“屏幕高度”,Integer.valueOf(metrics.heightPixels));
map.put(“屏幕密度”,Integer.valueOf(metrics.densityDpi));
返回图;
}捕获(异常错误){
;//只需使用零值
返回null;
}
}
希望能有帮助


另外,当然要在onCreate…之外声明函数。

谢谢,但这不起作用。进度的高度同样取决于宽度,所以唯一需要做一些更改的是修改params.width值…是的,我已经测试过了。。我已经用params.width=map.get(“屏幕高度”)进行了测试;和1500。。。什么都不起作用,不管我指定的宽度是多少,进度高度都固定在屏幕的宽度上。当你在xml文件中设置dp中的宽度时,它们的高度会改变吗?是的,它会改变,但直到我指定的宽度达到屏幕的宽度,然后完全忽略我设置的宽度,并且仍然被屏幕的宽度所阻挡。例如,如果我将宽度设置为200dp,则进度将为200dp高度。但是如果我设置1500dp,高度会被限制在~310dp(我的屏幕宽度)…你不应该在xml中使用
com.halzhang.android.verticalprogressbar.VerticalSeekBar
而不是
ProgressBar
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;
    }
}