我想将默认的Android页脚添加到Xamarin Forms的tableview中的tablesection。我该怎么做呢?我相信我需要一个tableview自定义渲染器,但我不确定是否已经过了制作它。
答案 0 :(得分:1)
关于您的其他问题Xamarin Forms - How to create custom render to give TableSection the default iOS Footer?,我不确定您是否要在整个TableView
或TableSection
的每个TableView
中添加页脚。< / p>
如果您要为每个TableSection
添加页脚,我建议您在每个TextCell
中添加自定义TableSection
作为页脚,因为TableSection
可以有多个Cell
如果你想将页脚添加到TableView
,你可以使用例如这样的代码:
public class TableViewWithFooterRenderer : TableViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control != null)
{
//Add footer to the whole TableView
var lv = Control as Android.Widget.ListView;
var footerview = ((LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService))
.Inflate(Resource.Layout.TableViewFooter, null, false);
lv.AddFooterView(footerview);
}
}
}
}
我为页脚创建了一个视图,因为您也可以使用其他视图。我的页脚视图是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="7dp">
<TextView android:id="@+id/footer"
android:text="This is footer"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_gravity="center" />
</LinearLayout>
<强>更新强>
在Android平台中, TableView
为rendered as ListView,因为Android平台中没有本地方法直接为ListView
的每个项添加页脚,正如我所建议的,我们可以手动添加自定义TextCell
或ViewCell
作为每个项目的页脚。正如您从TableSection的源代码中看到的那样,它是ObservableCollection
个对象。
例如:
<TableSection Title="Section 1 Title">
<TextCell Text="TextCell Text" Detail="TextCell Detail"></TextCell>
<ViewCell IsEnabled="False">
<Grid>
<Label Text="This is footer" />
</Grid>
</ViewCell>
</TableSection>
我没有在这里定制ViewCell
的风格,你可以试试你的风格。