Как установить программный код Android ProgressBar Size?
У меня есть пользовательский вид, который расширяет ViewGroup
. Он включает в себя ProgressBar
и a 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);
Ответы
Ответ 1
Вы можете использовать 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, просто используйте свойства 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" />
Ответ 3
В 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" />
Ответ 4
Давайте попробуем...
Я исправляю 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>
Теперь выглядит так:
![введите описание изображения здесь]()
Ответ 5
Легкий путь по шкале:
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
}
}
Ответ 6
Решение для одной строки, попробуйте это
progressBar.setPadding(0,24,0,24);//left,top,right,bottom