2016-04-16 36 views
3

如何在代码中更改Xamarin Forms ProgressBar的高度?我正在使用Xamarin Forms V2.1。如何更改Xamarin表单中进度条的高度?

.HeightRequest.MinimumHeightRequest似乎没有效果。默认的进度条非常薄,甚至不会被注意到。

.BackgroundColor似乎也不工作。

我在这里错过了什么?

回答

8

您需要自定义渲染了这一点:

首先创建一个类为您的自定义进度条:

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); 
     this.Transform = transform; 
    } 
} 

对于Android:

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 

    } 
} 

我希望这可以帮助你!

+0

非常感谢@kishang。为了让iOS渲染器工作,我需要更改this.Transform = transform;到Control.Transform = transform; - 还没有尝试过Android。 – BillF

1

@BillF是正确的基本

在iOS的渲染代码尝试使用

this.Control.Transform = transform; 

代替

this.Transform = transform;