2011-03-31 24 views
8

Tengo una vista personalizada que se extiende ViewGroup. Incluye un ProgressBar y un WebView. Estoy mostrando el ProgressBar mientras se carga el WebView.¿Cómo configuro programáticamente el tamaño de un ProgressBar de Android?

Esto funciona, pero el ProgressBar es demasiado grande. ¿Cómo lo hago más pequeño?

A continuación se muestra el código que no funciona:

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

Respuesta

19

Puede utilizar LayoutParams a cambiar el ancho y la altura de lo que quiera.

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

también cuando se agrega un punto de vista, se puede utilizar este código: test.addView(progressBar,50,50); en el que el primer parámetro es la anchura y la segunda es la altura.

12

También puede ajustar el tamaño de su progressbar desde dentro del xml, sólo tiene que utilizar android:maxHeight, android:minHeight, android:minWidth y android:maxWidth propiedades dentro de la etiqueta ProgressBar.

por ejemplo, Esto fijará la altura de la progressbar a 35dip y anchura a 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" /> 
+3

esto no está funcionando – Informatic0re

2

La forma easies es por escala:

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 

    } 
} 
2

en el XML, establecer el estilo , por ejemplo, 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" /> 
1

Vamos a darle una oportunidad ...

tengo fijar el size de progressBar con añadir un poco de 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> 

ahora se ve así:

enter image description here

+0

relleno de ajuste nos da ProgressBar en tamaños requeridos :) – sunil

Cuestiones relacionadas