2014-06-26 7 views
7

Я использую Xamarin.Forms, в настоящее время пытаюсь сделать TableView без заголовка раздела. Прямо сейчас на iOS это выглядит нормально, поскольку заголовок раздела не отображается или не доступен, но на Android заголовок пуст, отображается и доступен для просмотра.Заголовок заголовка TableView в андроиде пуст и доступен для вызова

Я попробовал этот 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 }, 
     }, 
    }, 
}; 

ответ

7

Для подавления заголовка на Android, мы используем пользовательский визуализатор. Если 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, и все будет в порядке.

+0

Работал отлично, спасибо Falko – meetsankar

+0

@Falko, сколько строк у вас в TableView? Когда я применяю это решение к моему TableView, некоторые строки, которые еще не видны, имеют пустой контент. –

+0

Как мы можем создать рендер для winPhone? – AEMLoviji