Xamarin 导航后将忽略HorizontalTextAlignment
我创建了一个简单的应用程序,用户可以在其中看到更多信息,如果他们在标签上打上标签,如下图所示 问题是,在导航到另一页后,文本会向左移动,即使我已将Xamarin 导航后将忽略HorizontalTextAlignment,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,我创建了一个简单的应用程序,用户可以在其中看到更多信息,如果他们在标签上打上标签,如下图所示 问题是,在导航到另一页后,文本会向左移动,即使我已将水平文本对齐设置为结束 只有当我显示该部分并再次隐藏它时(通过点击标签两次),才会发生这种情况。 问题如下图所示,y位于左侧 我的源代码显示了一个简单的应用程序与这个问题,可以从下载 编辑 添加了代码示例 ContentPage非常简单 <StackLayout> <Grid> <Grid.Colu
水平文本对齐设置为结束
只有当我显示该部分并再次隐藏它时(通过点击标签两次),才会发生这种情况。
问题如下图所示,y
位于左侧
我的源代码显示了一个简单的应用程序与这个问题,可以从下载
编辑
添加了代码示例
ContentPage非常简单
<StackLayout>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="Test" VerticalOptions="Start" />
<Label Text="{Binding Text}" HorizontalTextAlignment="End" TextColor="Red" HorizontalOptions="FillAndExpand" BackgroundColor="Yellow">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ChangeVisibilityCommand}" />
</Label.GestureRecognizers>
</Label>
</Grid>
<StackLayout IsVisible="{Binding IsVisible}">
<Label Text="Text 1" />
<Label Text="Text 2" />
</StackLayout>
<Button Command="{Binding OpenAnotherPageCommand}" Text="Open Another Page" />
</StackLayout>
而另一个页面
只是显示一个文本,例如首先,我无法使用最新版本的Xamarin复制您的问题。也许简单地升级Xamarin(表单)也会删除您案例中不需要的行为
如果没有,您有两个选择:
1-改用水平选项
HorizontalOptions=“EndAndExpand”
因为水平选项在布局引擎中具有更高的优先级。
这不是最优雅的方式,但肯定是最可靠的
2-使用数据绑定
在模型中,只需添加以下属性:
public TextAlignment LabelAlignment
{
get => labelAlignment;
set
{
labelAlignment = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(LabelAlignment)));
}
}
private TextAlignment labelAlignment = TextAlignment.End;
在Xaml中,您将水平对齐更改为
HorizontalTextAlignment=“{Binding LabelAlignment}”
这将起作用,因为在创建屏幕后,模型中的值将在以后加载和更新。更改horizontalpoptions=“FillAndExpand”
到horizontalpoptions=“CenterAndExpand”
这将强制文本从中心展开并放置在末尾
要强制文本向右,可以向网格中添加另一列定义:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
将和emtpy对象放置到第一个单元格(左侧的单元格)中:
- 顶部的数字(0)
- 左边的数字(0)
然后将标签放入第二个单元格,即右边的单元格:
- 顶部的数字(0)
- 左边的数字(1)
文本区域将根据文本长度进行调整,并始终位于右侧
我希望这些信息有帮助
您可以在文档中阅读有关网格的更多信息:
请花时间发布相关代码并格式化。不要期望其他人花时间下载zip,解压缩它,将代码加载到IDE中,然后为您调试它。我现在已经添加了代码。很抱歉,这个理论可能对您有所帮助@LasseMadsen Hi,您让它工作了吗?我尝试在测试应用程序上升级Xamarin.Forms,但没有工作。然后,我尝试将HorizontalOptions设置为EndAndExpand
,但这是不可能的,因为我需要将标签延伸到整个页面。不知何故,数据绑定没有起作用,这很奇怪。你的代码在我的系统上运行没有任何问题,我的数据绑定解决方案也运行良好。您是否仅在共享代码中升级了Xamarin.Forms,还是在本机项目中也升级了Xamarin.Forms?加载您的解决方案后,我得到了Xamarin.Forms的3.0.0.482510版本。也许还可以尝试确保您的MonoDroid和MonoTouch版本是最新版本。我使用的是Visual Studio 15.7.3 Professional,如果有兴趣的话。好的,我只使用社区,但其他方面都是最新的,但我现在找到了修复方法。如果我在OnDisappearing
中将其设置为Visible=false
,并在OnAppearing
中将其设置为Visible=true
,则它会起作用
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>