私はRESTから来るN個のカテゴリを持っているとします。私はこれらのすべてのカテゴリのタブを追加したいと思います。たとえば見てみましょう私のRESTレスポンスに2つのカテゴリしかないと仮定すると、2つのタブしか作成されません。 5つのカテゴリ、5つのタブなどがある場合。 各カテゴリタブでは、選択したタブ(カテゴリ)のアイテムのリストを読み込みます。 現在、私は断片を使って静的データを実装しています。各フラグメントは、アイテムをロードするためのリストビューを使用します。しかし、私はそれが正しい方法ではないと思う。Xamarin.Androidのカテゴリに基づいてタブを追加します。
あなたは私が使うべきか、どのように私は私のカテゴリに基づいてタブを追加することができ、各カテゴリのための私のリストを読み込むものを私に提案してくださいことはできますか?私はXamarin.androidでTabLayoutを見つけられませんでした。
私のメインビュー:私のフラグメントビューの
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>
そして私の破片クラス:
<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>
ここでは私の主な活動である
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);
}
はあなたに
ありがとうございます。私はあなたのやり方を試しましたが、主な問題は、プロジェクトにXamarin.Android.Support.Designコンポーネントを追加できないことです。 パッケージ「Xamarin.Android.Support.Design 26.0.2」をインストールできませんでした。 'MonoAndroid、Version = v6.0'を対象とするプロジェクトにこのパッケージをインストールしようとしていますが、そのフレームワークと互換性のあるアセンブリ参照またはコンテンツファイルがパッケージに含まれていません。詳細については、パッケージ作成者にお問い合わせください。 TabLayoutの代わりにタブを移動する方法はありますか? – Russell
@Russell、あなたのプロジェクトの目標バージョンは? –
Androidバージョン(ターゲットフレームワーク)を使用してコンパイルAndroid 6.0(マシュマロ)最小Androidバージョン:Android 5.0(APIレベル21- Lollipop) – Russell