如何设置Android ProgressBar';以编程方式调整大小?

如何设置Android ProgressBar';以编程方式调整大小?,android,progress-bar,Android,Progress Bar,我有一个扩展视图组的自定义视图。它包括一个ProgressBar和一个WebView。我正在加载WebView时显示ProgressBar 这是可行的,但是ProgressBar太大了。我该如何使它变小 以下是我的非工作代码: webView = new WebView(context); webView.setWebViewClient(new MyWebChromeClient()); webView.loadUrl("file://" + path); addView(webView);

我有一个扩展
视图组的自定义视图。它包括一个
ProgressBar
和一个
WebView
。我正在加载
WebView
时显示
ProgressBar

这是可行的,但是
ProgressBar
太大了。我该如何使它变小

以下是我的非工作代码:

webView = new WebView(context);
webView.setWebViewClient(new MyWebChromeClient());
webView.loadUrl("file://" + path);
addView(webView);

progressBar = new ProgressBar(mContext, null,
                                         android.R.attr.progressBarStyleSmall);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
                                                    LayoutParams.WRAP_CONTENT);
progressBar.setLayoutParams(params);

addView(progressBar);

可以使用LayoutParams将宽度和高度更改为所需的任何值

ProgressBar progressBar = new ProgressBar(teste.this, null, android.R.attr.progressBarStyleHorizontal);

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(300, 10);

            progressBar.setLayoutParams(params );
            LinearLayout test = new LinearLayout(getApplicationContext());
            test.addView(progressBar);
            setContentView(test);
此外,在添加视图时,还可以使用以下代码:
test.addView(progressBar,50,50)
其中第一个参数是宽度,第二个参数是高度。

您也可以从xml中设置progressbar的大小,只需在
progressbar
标记中使用
android:maxHeight
android:minHeight
android:maxWidth
属性即可

例如,这会将进度条的高度设置为
35dip
,宽度设置为
10dip

   <ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:layout_centerVertical="true"
    android:layout_marginLeft="60dip"
    android:maxHeight="35dip"
    android:minHeight="35dip"

    android:minWidth="10dip"
    android:maxWidth="10dip"

    android:visibility="visible" />

简单的方法是按比例:

public class CustomProgressBarRenderer :ProgressBarRenderer
{
  protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
  {
    base.OnElementChanged(e);

    Control.ProgressDrawable.SetColorFilter(Color.FromRgb(182, 231, 233).ToAndroid(), Android.Graphics.PorterDuff.Mode.SrcIn);
    Control.ProgressTintList = Android.Content.Res.ColorStateList.ValueOf(Color.FromRgb(182, 231, 233).ToAndroid());
    Control.ScaleY = 10; // This changes the height

  }
}
公共类CustomProgressBallenderer:ProgressBallenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.ProgressDrawable.SetColorFilter(Color.FromRgb(182231233).ToAndroid(),Android.Graphics.PorterDuff.Mode.SrcIn);
Control.ProgressTintList=Android.Content.Res.ColorStateList.ValueOf(Color.FromRgb(182231233.ToAndroid());
Control.ScaleY=10;//这会更改高度
}
}

xml中,设置样式,例如,

style=“?android:attr/progressBarStyleLarge”


让我们试一试

我已经通过添加一些
填充
修复了progressBar的
大小

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="45dp"
            />
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/category_img"
            android:scaleType="fitXY"
            tools:ignore="ContentDescription" />
    </RelativeLayout>

现在看起来是这样的:


单线解决方案,试试这个

progressBar.setPadding(0,24,0,24);//left,top,right,bottom

您可以通过scaleX和scaleY属性轻松完成以下操作:

progressBar.scaleX=0.5f
progressBar.scaleY=0.5f
这里,

scaleX:更改宽度,因此0.5会将宽度减少到实际宽度的一半


scaleY:更改高度,因此0.5会将高度降低到实际高度的一半

调整填充为我们提供所需大小的progressbar:)
progressBar.scaleX=0.5f
progressBar.scaleY=0.5f