使用Xamarin.Forms,我该如何实现这样的布局?
我在谈论灰色背景的文字提示:
启用个人热点以分享...
我可以添加到ListView
或TableView
的所有标准ViewCells
,并且它们都会使用分隔符和白色背景进行渲染。
如果使用TableView
或ListView
无法实现此布局,如何在标准中呈现ViewCell
(如示例图片中的Wi-Fi密码) StackLayout
?
答案 0 :(得分:2)
即使TableView没有开箱即用的ViewCell
,你也可以推出自己的实现。显然有一个TextCell,但它不允许你指定字体大小和其他东西。
你可以这样做:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="DemoTableView.TablePage" Title="TableView">
<ContentPage.Content>
<TableView Intent="Settings">
<TableRoot>
<TableSection>
<SwitchCell Text="Personal Hotspot" />
<ViewCell> <!-- Simple text -->
<Label Text="Turn on personal hotspot..." FontSize="Small" ForegroundColor="Gray" />
</ViewCell>
<ViewCell> <!-- More complex cell -->
<StackLayout Orientation="Horizontal>
<Image Source="someicon" />
<StackLayout>
<Label Text="TO CONNECT USING WIFI" FontSize="Large"/>
<Label Text="Something more" FontSize="Small" />
</StackLayout>
</StackLayout>
</ViewCell>
</TableSection>
</TableRoot>
</TableView>
</ContentPage.Content>
</ContentPage>
这只是一个快速写的例子,但你明白了。您还可以通过继承ViewCell
类并以编程方式定义自己的单元格,并在TableView中显示它们。
Here's more关于官方文档中的自定义单元格。
编辑:根据您的评论,我们需要深入了解平台特定代码,以禁用纯文本单元格上的选择。您应该使用以下iOS自定义渲染器创建自定义ViewCell实现:
[assembly: ExportCell(typeof(YourCell), typeof(YourCellRenderer))]
namespace YourProject.iOS
{
public class YourCellRenderer : ViewCellRenderer
{
public override UITableViewCell GetCell (Cell item, UITableView tv)
{
var cell = base.GetCell (item, tv);
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
return cell;
}
}
}