【发布时间】:2017-01-25 20:24:23
【问题描述】:
我有两个相邻的标签。第一个很长,如有必要应截断。第二个应该完全显示 - 无论如何。
这是我的代码:
MainPage = new ContentPage {
Content = new StackLayout {
Orientation = StackOrientation.Horizontal,
VerticalOptions = LayoutOptions.CenterAndExpand,
BackgroundColor = Color.Orange,
Padding = 10,
Children = {
new Label {
Text = "The answer to life the universe and everything",
HorizontalOptions = LayoutOptions.Start,
LineBreakMode = LineBreakMode.TailTruncation,
BackgroundColor = Color.Yellow,
},
new Label {
Text = "42",
HorizontalOptions = LayoutOptions.EndAndExpand,
LineBreakMode = LineBreakMode.NoWrap,
BackgroundColor = Color.Yellow,
},
},
},
};
这是我得到的:
我的问题:如何防止“42”被截断?
对当前结果的解释:我想我知道了,为什么第二个标签太小了。两个标签的大小在第一个文本被截断之前协商。所以两个标签都需要缩小一点,虽然第一个标签可以处理得更好。
想法 1: 我尝试了相对布局(而不是堆栈布局)。然而,这是一种相当复杂的方法,我在 iOS 和 Android 上得到了不同的结果。所以我希望有一个更简单的解决方法。
想法 2:我应该覆盖其中一种布局或尺寸协商方法吗?也许“42”布局可以强制获得所需的宽度。
想法 3:也许我们可以为 iOS 和 Android 提供自定义标签渲染器,以按预期处理尺寸协商。
更新
“42”只是一个例子。在我的最终应用程序中,这将动态变化,并且可以是不同长度的字符串。所以在不知道渲染字符串宽度的情况下设置MinimumWidthRequest 也无济于事。
【问题讨论】:
标签: layout xamarin.ios xamarin.android xamarin.forms