假设我有来自我的REST的N个数字类别。我想为所有这些类别添加标签。让我们看看,例如假设在我的REST响应中只有2个类别,它只创建了两个选项卡。如果它有5个类别,那么5个标签,依此类推。 在每个类别选项卡中,为选定的选项卡(类别)加载我的项目列表。 目前我已经使用片段实现了静态数据。每个片段使用列表视图来加载项目。但我认为这不是一种正确的方式。
您能否建议我应该使用什么?如何根据我的类别添加标签并加载每个类别的列表?我没有在Xamarin.android中找到TabLayout。
我的主要观点:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragmentContainer" />
</LinearLayout>
这是我的主要活动:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.MainView);
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
AddTab(" Favorite", Resource.Drawable.FavoritesIcon, new FavoriteItemFragment());
AddTab(" Ice", Resource.Drawable.IceCreamIcon, new IceCreamFragment());
AddTab(" Shushi", Resource.Drawable.SushiIcon, new ShushiFragment());
AddTab(" Burger", Resource.Drawable.VeggieLoversIcon, new BurgerFragment());
AddTab(" Biriyani", Resource.Drawable.BiriyaniIcon, new BiriyaniFragment());
AddTab(" Pasta", Resource.Drawable.PastaIcon, new PastaFragment());
AddTab(" Pizza", Resource.Drawable.PizzaIcon, new PizzaFragment());
AddTab(" Sandwich", Resource.Drawable.SandwichIcon, new SandwichFragment());
AddTab(" Coffee", Resource.Drawable.CoffeeIcon, new CoffeeFragment());
//no_of_categories = allCategories.Count;
}
private void AddTab(string tabText, int iconResourceId, Fragment view)
{
var tab = this.ActionBar.NewTab();
tab.SetText(tabText);
tab.SetIcon(iconResourceId);
tab.TabSelected += delegate (object sender, ActionBar.TabEventArgs e)
{
var fragment = this.FragmentManager.FindFragmentById(Resource.Id.fragmentContainer);
if (fragment != null)
{
e.FragmentTransaction.Remove(fragment);
}
e.FragmentTransaction.Add(Resource.Id.fragmentContainer, view);
};
tab.TabUnselected += delegate (object sender, ActionBar.TabEventArgs e)
{
e.FragmentTransaction.Remove(view);
};
this.ActionBar.AddTab(tab);
}
我的片段视图之一:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:background="#FCD972"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/itemListView" />
</LinearLayout>
和我的片段类:
public override void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
FindViews();
HandleEvents();
items = itemDataService.GetItemsForCategory(4);
listView.Adapter = new ItemListAdapter(this.Activity, items);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.Inflate(Resource.Layout.MyFragment, container, false);
}
谢谢
答案 0 :(得分:0)
您能否建议我应该使用什么?如何根据我的类别添加标签并加载每个类别的列表?我没有在Xamarin.android中找到TabLayout。
我不能说你使用的方法是错误的,但是如果你想在Xamarin.Android中使用TabLayout
,你需要安装Xamarin.Android.Support.Design包和一些包{} {1}}。
然后你可以设计你的布局,例如:
Xamarin.Android.Support.v4
有关详细信息,请参阅本教程:Xamarin Android: Working with material design TabLayout and ViewPager。