我有一个扩展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);
答案 0 :(得分:25)
您可以使用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);
其中第一个参数是宽度,第二个参数是高度。
答案 1 :(得分:17)
您还可以在xml中设置进度条的大小,只需在android:maxHeight
内使用android:minHeight
,android:minWidth
,android:maxWidth
和ProgressBar
属性标签
例如,这会将进度条的高度设置为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" />
答案 2 :(得分:6)
在 xml 中,设置样式,例如
<强>风格= “机器人: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" />
答案 3 :(得分:4)
让我们试一试......
我修复了progressBar的size
并添加了一些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>
现在看起来像这样:
答案 4 :(得分:2)
简易方法是按比例的:
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
}
}
答案 5 :(得分:1)
您可以通过scaleX和scaleY属性轻松完成操作,方法如下:
progressBar.scaleX=0.5f
progressBar.scaleY=0.5f
在这里
scaleX:要更改宽度,因此0.5会将宽度减小为实际宽度的一半
scaleY::要更改高度,因此0.5会将高度减小到实际高度的一半
答案 6 :(得分:0)
单行解决方案,请尝试
progressBar.setPadding(0,24,0,24);//left,top,right,bottom