ViewGroup
を拡張するカスタムビューがあります。 ProgressBar
とWebView
が含まれています。 ProgressBar
のロード中にWebView
を表示しています。
これは機能しますが、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);
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);
最初のパラメーターは幅、2番目のパラメーターは高さです。
Xml内からプログレスバーのサイズを設定することもできます。ProgressBar
タグ内のAndroid:maxHeight
、Android:minHeight
、Android:minWidth
、Android: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" />
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" />
やるだけやってみよう...
いくつかのsize
を追加して、progressBarの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>
これは次のようになります。
簡単な方法はスケールによるものです:
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
}
}
あなたは簡単にscaleXとscaleYプロパティを介して行うことができます、ここに方法は次のとおりです:
progressBar.scaleX=0.5f
progressBar.scaleY=0.5f
ここに、
scaleX:幅を変更するため、0.5は幅を実際の幅の半分に縮小します
scaleY:高さを変更するため、0.5は高さを実際の高さの半分に減らします
単一行の解決策、これを試してください
progressBar.setPadding(0,24,0,24);//left,top,right,bottom