可选的拆分字符串 ascii 字符
optional split string ascii char
是否有 ascii 字符(不可打印)来建议在需要时在何处拆分字符串。这是为了在单元格中正确显示,即使在屏幕旋转时也是如此。在此示例中,我使用 5x2 网格中的按钮。
因此,如果屏幕是垂直的,当文本被换行以适合单元格时,“powerslave”将更改为“power slave”。
例如。 “斯大林格勒”不适合牢房,所以我想要
垂直屏幕时“staling grad”。
我想将它用于 xamarin android 应用程序。现在 xamarin (4.8) 使
“stalingra d”或“powerslav e”。我没有任何控制权,因为没有环绕反馈。
是的,可以根据设备Orientation的方向改变上面CollectionView的数据源。
首先,关于如何检测设备的方向,您可以在您的页面中覆盖方法OnSizeAllocated
。
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (Height > Width)
{
viewModel.LoadPortraitData();
}
else {
viewModel.LoadLandscapeData();
}
}
有关更多信息,请查看 Device Orientation。
其次,根据您的需要,我们可以使用CollectionView来显示字符串列表。我们可以通过将其 ItemsLayout
属性 设置为 VerticalGrid
.
来在垂直网格中显示其项目
<CollectionView ItemsLayout="VerticalGrid, 2"
ItemsSource="{Binding items}">
我做了一个简单的demo,你可以参考下面的代码:
<StackLayout Margin="20">
<CollectionView ItemsLayout="VerticalGrid, 2"
ItemsSource="{Binding items}">
</CollectionView>
</StackLayout>
VerticalGridTextPage.xaml.cs的代码:
public partial class VerticalGridTextPage : ContentPage
{
MyViewModel viewModel;
public VerticalGridTextPage()
{
InitializeComponent();
viewModel = new MyViewModel();
this.BindingContext = viewModel;
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (Height > Width)
{
viewModel.LoadPortraitData();
}
else {
viewModel.LoadLandscapeData();
}
}
}
MyViewModel.cs
public class MyViewModel
{
public ObservableCollection<string> items { get; set; } = new ObservableCollection<string>();
public void LoadLandscapeData()
{
items.Clear();
items.Add("power slave");
items.Add("staling grad");
}
public void LoadPortraitData() {
items.Clear();
items.Add("powerslave");
items.Add("stalinggrad");
}
public MyViewModel() {
LoadPortraitData();
}
}
更多信息,请查看:Vertical grid。
我认为唯一可以用 xamarin 形式包装文本的字符是 0x20 space 字符。
所以,我更新了一个TTF字体。我 0x20 复制 space 到下划线并将 space 字符 0x20 修改为 0 水平宽度。
如何使用我在这里找到的自定义堡垒(来自 Gerald Versluis)。
现在我可以解析任何文本了。将任何“”替换为“_”,只要允许换行,我就可以使用“”。
<Button Grid.Row="0" Grid.Column="0" Text="Aces_ High" />
<Button Grid.Row="0" Grid.Column="1" Text="Agents_ of_ Steel" />
<Button Grid.Row="1" Grid.Column="0" Text="Break ing_ the_ Law" />
<Button Grid.Row="1" Grid.Column="1" Text="Fast_ as_ a_ Shark" />
<Button Grid.Row="2" Grid.Column="0" Text="fht_ Bells_ Tolls" />
<Button Grid.Row="2" Grid.Column="1" Text="Holy_ Diver" />
<Button Grid.Row="3" Grid.Column="0" Text="Mad_ House" />
<Button Grid.Row="3" Grid.Column="1" Text="Power slave" />
<Button Grid.Row="4" Grid.Column="0" Text="Symp_ of_ De struct ion" />
<Button Grid.Row="4" Grid.Column="1" Text="Stalin grad" />
<Button Grid.Row="5" Grid.Column="0" Text="t_ Number_ ot_ Beast" />
<Button Grid.Row="5" Grid.Column="1" Text="Stop" />
然后我得到这个结果。实际上,我希望这个功能会出现在 xamarin 平台中。
是否有 ascii 字符(不可打印)来建议在需要时在何处拆分字符串。这是为了在单元格中正确显示,即使在屏幕旋转时也是如此。在此示例中,我使用 5x2 网格中的按钮。
因此,如果屏幕是垂直的,当文本被换行以适合单元格时,“powerslave”将更改为“power slave”。
例如。 “斯大林格勒”不适合牢房,所以我想要 垂直屏幕时“staling grad”。
我想将它用于 xamarin android 应用程序。现在 xamarin (4.8) 使 “stalingra d”或“powerslav e”。我没有任何控制权,因为没有环绕反馈。
是的,可以根据设备Orientation的方向改变上面CollectionView的数据源。
首先,关于如何检测设备的方向,您可以在您的页面中覆盖方法OnSizeAllocated
。
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (Height > Width)
{
viewModel.LoadPortraitData();
}
else {
viewModel.LoadLandscapeData();
}
}
有关更多信息,请查看 Device Orientation。
其次,根据您的需要,我们可以使用CollectionView来显示字符串列表。我们可以通过将其 ItemsLayout
属性 设置为 VerticalGrid
.
<CollectionView ItemsLayout="VerticalGrid, 2"
ItemsSource="{Binding items}">
我做了一个简单的demo,你可以参考下面的代码:
<StackLayout Margin="20">
<CollectionView ItemsLayout="VerticalGrid, 2"
ItemsSource="{Binding items}">
</CollectionView>
</StackLayout>
VerticalGridTextPage.xaml.cs的代码:
public partial class VerticalGridTextPage : ContentPage
{
MyViewModel viewModel;
public VerticalGridTextPage()
{
InitializeComponent();
viewModel = new MyViewModel();
this.BindingContext = viewModel;
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (Height > Width)
{
viewModel.LoadPortraitData();
}
else {
viewModel.LoadLandscapeData();
}
}
}
MyViewModel.cs
public class MyViewModel
{
public ObservableCollection<string> items { get; set; } = new ObservableCollection<string>();
public void LoadLandscapeData()
{
items.Clear();
items.Add("power slave");
items.Add("staling grad");
}
public void LoadPortraitData() {
items.Clear();
items.Add("powerslave");
items.Add("stalinggrad");
}
public MyViewModel() {
LoadPortraitData();
}
}
更多信息,请查看:Vertical grid。
我认为唯一可以用 xamarin 形式包装文本的字符是 0x20 space 字符。
所以,我更新了一个TTF字体。我 0x20 复制 space 到下划线并将 space 字符 0x20 修改为 0 水平宽度。
如何使用我在这里找到的自定义堡垒(来自 Gerald Versluis)。
现在我可以解析任何文本了。将任何“”替换为“_”,只要允许换行,我就可以使用“”。
<Button Grid.Row="0" Grid.Column="0" Text="Aces_ High" />
<Button Grid.Row="0" Grid.Column="1" Text="Agents_ of_ Steel" />
<Button Grid.Row="1" Grid.Column="0" Text="Break ing_ the_ Law" />
<Button Grid.Row="1" Grid.Column="1" Text="Fast_ as_ a_ Shark" />
<Button Grid.Row="2" Grid.Column="0" Text="fht_ Bells_ Tolls" />
<Button Grid.Row="2" Grid.Column="1" Text="Holy_ Diver" />
<Button Grid.Row="3" Grid.Column="0" Text="Mad_ House" />
<Button Grid.Row="3" Grid.Column="1" Text="Power slave" />
<Button Grid.Row="4" Grid.Column="0" Text="Symp_ of_ De struct ion" />
<Button Grid.Row="4" Grid.Column="1" Text="Stalin grad" />
<Button Grid.Row="5" Grid.Column="0" Text="t_ Number_ ot_ Beast" />
<Button Grid.Row="5" Grid.Column="1" Text="Stop" />
然后我得到这个结果。实际上,我希望这个功能会出现在 xamarin 平台中。