web-dev-qa-db-ja.com

プログラムでAndroid ProgressBarのサイズを設定するにはどうすればよいですか?

ViewGroupを拡張するカスタムビューがあります。 ProgressBarWebViewが含まれています。 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);
17
Qing

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番目のパラメーターは高さです。

27
Peter

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

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" />
8
bat-el.g

やるだけやってみよう...

いくつかの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>

これは次のようになります。

enter image description here

3
Asif Raza

簡単な方法はスケールによるものです:

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
kishang

あなたは簡単にscaleXとscaleYプロパティを介して行うことができます、ここに方法は次のとおりです:

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

ここに、

scaleX:幅を変更するため、0.5は幅を実際の幅の半分に縮小します

scaleY:高さを変更するため、0.5は高さを実際の高さの半分に減らします

1
Suraj Vaishnav

単一行の解決策、これを試してください

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