繁体   English   中英

如何更改 Xamarin Forms 中进度条的高度?

[英]How to change height of progress bar in Xamarin Forms?

如何在代码中更改 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;
    }
}

[编辑:根据评论固定上面的代码]

对于安卓:

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

    }
}

我希望这对你有帮助!

<ProgressBar BackgroundColor="White" ProgressColor="#BCC7EF" Progress="0.7"> <ProgressBar.ScaleY> <OnPlatform x:TypeArguments="x:Double" iOS="2" Android="1" /> </ProgressBar.ScaleY>

要使进度条更粗,您只需更改 ProgressBar 的 ScaleY 属性。

例如:此代码

<ProgressBar Progress=".5"/>
<ProgressBar ScaleY="2" Progress=".5"/>
<ProgressBar ScaleY="5" Progress=".5"/>

产生这个在此处输入图片说明

请注意,您可能需要相应地调整您的边距。

@BillF 基本上是正确的

在 iOS 渲染器代码中尝试使用

this.Control.Transform = transform; 

而不是

this.Transform = transform;

我遇到了同样的需求,在最新版本的 Visual Studio 16.5.2 上,我发现要获得更大的水平条,您只需要在 xml 中的进度条声明中设置 ScaleY。 为了避免在 Android 上出现故障并确保进度条不会压倒其他元素,我添加了一个边距,如下面的声明所示。

        <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar1"
        android:layout_below="@+id/message"
        android:scaleY="8"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"/>

对我来说,最简单的解决方案是使用Xamarin.Forms.Visual.Material然后在你的 XAML 中,在进度条中将HeightRequest属性设置为你想要的,并使用Visual属性作为 Material。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM