如何在代码中更改Xamarin Forms ProgressBar的高度?我使用的是Xamarin Forms V2.1。 .HeightRequest和.MinimumHeightRequest似乎没有任何效果。默认的进度条非常细,甚至可能不会被注意到。 .BackgroundColor似乎也不起作用。 我错过了什么?
public class CustomProgressBar :ProgressBar
{
public CustomProgressBar()
{
}
}
然后为自定义进度条渲染器添加一个新文件: 对于iOS:
public class CustomProgressBarRenderer : ProgressBarRenderer
{
protected override void OnElementChanged(
ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
{
base.OnElementChanged(e);
Control.ProgressTintColor = Color.FromRgb(182, 231, 233).ToUIColor();// This changes the color of the progress
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
var X = 1.0f;
var Y = 10.0f; // This changes the height
CGAffineTransform transform = CGAffineTransform.MakeScale(X, Y);
Control.Transform = transform;
}
}
[EDIT:根据备注修复上述代码] 对于安卓系统:
public class CustomProgressBarRenderer :ProgressBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
{
base.OnElementChanged(e);
Control.ProgressTintList = Android.Content.Res.ColorStateList.ValueOf(Color.FromRgb(182, 231, 233).ToAndroid()); //Change the color
Control.ScaleY = 10; //Changes the height
}
}
6条答案
按热度按时间pgpifvop1#
您需要自定义渲染器:
首先为自定义进度栏创建一个类:
然后为自定义进度条渲染器添加一个新文件:
对于iOS:
[EDIT:根据备注修复上述代码]
对于安卓系统:
我希望这对你有帮助!
mdfafbf12#
若要使进度栏更粗,只需更改ProgressBar的ScaleY属性。
例如:此代码
生成此
请注意,您可能需要相应地调整边距。
s3fp2yjn3#
u91tlkcl4#
@BillF基本正确
在iOS渲染器代码中,尝试使用
代替
bmvo0sr55#
我也面临着同样的需求,在最新版本的Visual Studio 16.5.2中,我发现要获得更大的水平条,只需在xml中的progressbar声明中设置ScaleY。为了避免Android上的小故障,并确保进度条不会淹没其他元素,我添加了一个边距,正如您在下面的声明中所看到的。
zvms9eto6#
对我来说,最简单的解决方案是使用Xamarin.Forms.Visual.Material然后在您的XAML,在进度条设置
HeightRequest
属性为您想要的,并使用Visual
属性作为材料。