我正在使用 Xamarin.Forms
,目前正在尝试制作 TableView
没有节标题。现在在 iOS
这看起来不错,因为部分标题不可见或不可点击,但在 Android
上标题为空白、可见且可点击。
我试过这个 http://forums.xamarin.com/discussion/18037/tablesection-w-out-header
xaml 中的代码 -
<TableView>
<TableView.Root>
<TableSection>
<TextCell Text="Login" Command="{Binding Login}" />
<TextCell Text="Sign Up" Command="{Binding SignUp}" />
<TextCell Text="About" Command="{Binding About}"/>
</TableSection>
</TableView.Root>
</TableView>
C#中的代码
Content = new TableView
{
Root = new TableRoot
{
new TableSection ()
{
new TextCell { Text="Login", Command = Login },
new TextCell { Text="Sign Up", Command = SignUp },
new TextCell { Text="About", Command = About },
},
},
};
请您参考如下方法:
为了抑制 Android 上的 header ,我们使用自定义渲染器。如 Text
为空,它通过删除所有子项、降低高度和删除所有填充来隐藏单元格。
[assembly: ExportRenderer(typeof(TextCell), typeof(ImprovedTextCellRenderer))]
namespace YourSolution.Android
{
public class ImprovedTextCellRenderer : TextCellRenderer
{
protected override global::Android.Views.View GetCellCore(Cell item, global::Android.Views.View convertView, ViewGroup parent, Context context)
{
var view = base.GetCellCore(item, convertView, parent, context) as ViewGroup;
if (String.IsNullOrEmpty((item as TextCell).Text)) {
view.Visibility = ViewStates.Gone;
while (view.ChildCount > 0)
view.RemoveViewAt(0);
view.SetMinimumHeight(0);
view.SetPadding(0, 0, 0, 0);
}
return view;
}
}
}
只需将这个类复制到你的 Android 项目中,你应该没问题。