J'ai une vue personnalisée qui étend ViewGroup
. Il comprend un ProgressBar
et un WebView
. J'affiche le ProgressBar
pendant le chargement du WebView
.
Cela fonctionne, mais le ProgressBar
est trop grand. Comment puis-je le réduire?
Voici mon code non fonctionnel:
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);
Vous pouvez utiliser LayoutParams pour modifier la largeur et la hauteur à votre guise.
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);
De plus, lorsque vous ajoutez une vue, vous pouvez utiliser ce code: test.addView(progressBar,50,50);
où le premier paramètre est largeur et le second est hauteur.
Vous pouvez également définir la taille de votre barre de progression à partir du XML, utilisez simplement Android:maxHeight
, Android:minHeight
, Android:minWidth
et Android:maxWidth
propriétés à l'intérieur de votre balise ProgressBar
.
par exemple, cela définira la hauteur de la barre de progression sur 35dip
et largeur à 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" />
Dans le xml, définissez le style, par exemple,
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" />
Essayons...
J'ai corrigé le size
de progressBar avec l'ajout 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>
Ressemble maintenant à ceci:
La manière la plus simple est par échelle:
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
}
}
Vous pouvez facilement le faire via la propriété scaleX et scaleY, voici comment:
progressBar.scaleX=0.5f
progressBar.scaleY=0.5f
Ici,
scaleX: Pour changer la largeur, 0,5 réduira donc la largeur à la moitié de la largeur réelle
scaleY: Pour changer la hauteur, 0,5 réduira la hauteur à la moitié de la hauteur réelle
Solution monoligne, essayez ceci
progressBar.setPadding(0,24,0,24);//left,top,right,bottom