c# - 如何让标签文字自动滚动?

标签 c# xamarin.forms marquee

我有一个按钮,我想在其中输入一些文本,但有些文本可能太长而无法很好地放入按钮中。我想让文本在一行中水平滚动,就像 HTML 中的选取框一样。我可以让它在一行中滚动,但是,测试文本在按钮的边缘被截断,并且那里的文本实际上会离开按钮而不是在按钮的边缘消失。

我已经在谷歌上搜索了我的问题的答案,几个小时后,我想是时候提出我的问题了。

<Grid HeightRequest="400" Grid.Column="0" Grid.Row="0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Button BackgroundColor="#006633" Opacity="0.7" Grid.RowSpan="3" Grid.ColumnSpan="1">

    </Button>
    <Label x:Name="Label1" StyleClass="button" Grid.Row="1" Grid.Column="0" >

    </Label>
</Grid>

public void Marque1()
{
    Label1.Text = "This is to simulate a really long sentence for testing purposes";
    Label1.HorizontalOptions = LayoutOptions.Start;
    Label1.VerticalTextAlignment = TextAlignment.Center;
    Label1.LineBreakMode = LineBreakMode.NoWrap;

    Label1.TranslateTo(-50, 0, 8000, Easing.Linear);
}

我希望整个文本从右向左移动并重复,并且不离开按钮的边界。

最佳答案

你可以看看这个,是不是你需要的效果:

public partial class MaqueText : ContentPage
{
    private bool Execute { get; set; }
    public MaqueText ()
    {
        InitializeComponent ();
        Label1.Text = "This is to simulate a really long sentence for testing purposes";
        Label1.HorizontalOptions = LayoutOptions.Start;
        Label1.VerticalTextAlignment = TextAlignment.Center;
        Label1.LineBreakMode = LineBreakMode.NoWrap;
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        Execute = true;

        Device.StartTimer(TimeSpan.FromMilliseconds(50), () =>
        {
            Label1.TranslationX -= 5f;

            if (Math.Abs(Label1.TranslationX) > Width)
            {
                Label1.TranslationX = Label1.Width;
            }

            return Execute;
        });
    }
    protected override void OnDisappearing()
    {
        base.OnDisappearing();

        Execute = false;
    }
}

关于c# - 如何让标签文字自动滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237615/

相关文章:

c# property override Set 方法

html - 用于可变消息长度的 CSS Marquee

html - 如何仅在溢出时制作字幕文字?

c# - SqlException - 从服务器接收结果时发生传输级错误

c# - 在 WinForms 应用程序中第二次未检测到任务管理器关闭

c# - 异步调用的 Func 语法

xamarin - 如何在 Xamarin.Forms 的多平台应用程序中使用分段控件

javascript - 这种无缝的选框风格让每一卷都感到不安

c# - 实例方法调用 Dispose

c# - 在 C#、Xamarin Forms 中获取异步任务的结果