我正在使用 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 项目中,你应该没问题。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!