如何在Android中以编程方式设置ProgressBar的大小?

19
我有一个扩展了 ViewGroup 的自定义视图,其中包括一个 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);
7个回答

29
你可以使用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);

其中第一个参数是宽度,第二个参数是高度。


23

您还可以在xml中设置进度条的大小,只需在ProgressBar标记内使用android:maxHeightandroid:minHeightandroid:minWidthandroid: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" />

11
XML 中,设置样式,例如:

style="?android:attr/progressBarStyleLarge"

<ProgressBar
                        android:id="@+id/progressBar3"
                        style="?android:attr/progressBarStyleLarge"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true" />

4

您可以通过scaleX和scaleY属性轻松实现,以下是具体步骤:

progressBar.scaleX=0.5f
progressBar.scaleY=0.5f

这里是关于IT技术相关内容的翻译:

scaleX: 是用来改变宽度的属性,设置为0.5时会将原来宽度的一半作为新宽度。

scaleY: 是用来改变高度的属性,设置为0.5时会将原来高度的一半作为新高度。


3

让我们试一试...

我通过添加一些 padding 来修复了 progressBar 的 size

<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>

现在看起来是这样的:

enter image description here


(说明:此内容为HTML代码,无需翻译)

调整填充值可以让我们获得所需大小的进度条 :) - sunil

3

最简单的方法是通过规模:

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

  }
}

-1

单行解决方案,试试这个

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接