Angenommen, ich habe N-Nummern-Kategorien, die von meinem REST kommen. Ich möchte Tabs für alle diese Kategorien hinzufügen. Mal sehen, z.B. Angenommen, in meiner REST-Antwort haben nur 2 Kategorien, es ist nur zwei Registerkarte erstellen. wenn es 5 Kategorien hat, dann 5 Tabs und so weiter. Und in jeder Kategorie Registerkarte laden Sie eine Liste meiner Artikel für ausgewählte Registerkarte (Kategorie). Derzeit habe ich es mit statischen Daten mit Hilfe von Fragment implementieren. Jedes Fragment verwendet eine Listenansicht zum Laden von Elementen. Aber ich denke, es ist kein richtiger Weg.Hinzufügen von Tabs basierend auf Kategorien in Xamarin.Android
Können Sie mir empfehlen, was soll ich verwenden oder wie kann ich Tab hinzufügen, basierend auf meiner Kategorie und meiner Liste für jede Kategorie laden? Ich habe TabLayout nicht in Xamarin.android gefunden.
Meine Hauptansicht:
<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>
Hier ist meine Haupttätigkeit:
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);
}
Einer meines Fragment Ausblick:
<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>
And My Fragment Klasse:
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);
}
Danke
Vielen Dank für Ihren Vorschlag. Ich habe es versucht, aber das Hauptproblem ist, kann Xamarin.Android.Support.Design Component nicht zu meinem Projekt hinzufügen. Es ist ein Fehler: Konnte das Paket 'Xamarin.Android.Support.Design 26.0.2' nicht installieren. Sie versuchen, dieses Paket in einem Projekt zu installieren, das auf MonoAndroid, Version = v6.0 abzielt, aber das Paket enthält keine Assemblyverweise oder Inhaltsdateien, die mit diesem Framework kompatibel sind. Wenden Sie sich an den Autor des Pakets, um weitere Informationen zu erhalten. Gibt es alternative Möglichkeiten zum Tabbing anstelle von TabLayout? – Russell
@ Russell, was ist die Zielversion Ihres Projekts? –
Kompilieren mit Android-Version (Ziel-Framework) Android 6.0 (Marshmallow) Min Android-Version: Android 5.0 (API-Ebene 21 - Lollipop) – Russell