How do I set an Android ProgressBar's Size programmatically?

后端 未结 7 1638
盖世英雄少女心
盖世英雄少女心 2021-01-01 17:33

I have a custom view that extends ViewGroup. It includes a ProgressBar and a WebView. I\'m displaying the ProgressBar whi

相关标签:
7条回答
  • 2021-01-01 17:43

    The easies way is by scale:

    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
    
      }
    }
    
    0 讨论(0)
  • 2021-01-01 17:44

    In the xml, set the style, for example,

    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" />
    
    0 讨论(0)
  • 2021-01-01 17:52

    You can use LayoutParams to change width and height to whatever you want.

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

    Also when you add a view, you can use this code: test.addView(progressBar,50,50); where the first parameter is width and the second is height.

    0 讨论(0)
  • 2021-01-01 17:52

    You can also set the size of your progressbar from within the xml, just use android:maxHeight, android:minHeight, android:minWidth and android:maxWidth properties inside your ProgressBar tag.

    for instance, this will set the height of the progressbar to 35dip and width to 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" />
    
    0 讨论(0)
  • 2021-01-01 17:52

    You can easily do via scaleX and scaleY property, here's how:

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

    Here,

    scaleX: To change the width, so 0.5 will reduce the width to the half of the actual width

    scaleY: To change the height, so 0.5 will reduce the height to the half of actual height

    0 讨论(0)
  • 2021-01-01 17:59

    Single line solution, try this

    progressBar.setPadding(0,24,0,24);//left,top,right,bottom
    
    0 讨论(0)
提交回复
热议问题