【问题标题】:How do I set an Android ProgressBar's Size programmatically?如何以编程方式设置 Android ProgressBar 的大小?
【发布时间】:2011-03-31 08:16:52
【问题描述】:

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

这可行,但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);

【问题讨论】:

    标签: android progress-bar


    【解决方案1】:

    您还可以在 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" />
    

    【讨论】:

      【解决方案2】:

      您可以通过 scaleX 和 scaleY 属性轻松完成,方法如下:

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

      这里,

      scaleX:改变宽度,所以0.5会将宽度缩小到实际宽度的一半

      scaleY:改变高度,所以0.5会将高度降低到实际高度的一半

      【讨论】:

        【解决方案3】:

        您可以使用 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); 其中第一个参数是宽度,第二个是高度。

        【讨论】:

          【解决方案4】:

          简单的方法是按比例:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              【解决方案6】:

              单线解决方案,试试这个

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

              【讨论】:

                【解决方案7】:

                让我们试一试……

                我已经修复了progressBar 的size 并添加了一些padding

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

                现在看起来像这样:

                【讨论】:

                • 调整填充为我们提供所需大小的进度条:)
                猜你喜欢
                • 1970-01-01
                • 2011-10-11
                • 1970-01-01
                • 2015-09-20
                • 2015-01-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-09-08
                相关资源
                最近更新 更多