如何在 Xamarin 中更新 TabHost Indicator Android
How to update TabHost Indicator in Xamarin Android
我需要动态更改选项卡指示器。我可以在 Java 中找到答案,但在 Xamarin 中找不到。我尝试使用 java 代码,但没有用。这是我的代码。
布局代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/llcheckoutmiddle"
android:layout_below="@id/llcheckouttop">
<TabHost
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabHostChkOut">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/linearLayout1">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="50dp" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</TabHost>
</LinearLayout>
Activity代码:
LocalActivityManager localActMgr = new LocalActivityManager(this, false);
localActMgr.DispatchCreate(bundle);
TabHost tabHost = FindViewById<TabHost>(Resource.Id.tabHostChkOut);
tabHost.Setup(localActMgr);
TabHost.TabSpec tabSpec = null;
Intent intent = new Intent();
intent = new Intent();
intent.SetFlags(ActivityFlags.NewTask);
intent.SetClass(this, typeof(RouteCheckoutExc));
tabSpec = tabHost.NewTabSpec("Exc");
tabSpec.SetContent(intent);
tabSpec.SetIndicator("Exc (" + ExcCount + ")");
tabHost.AddTab(tabSpec);
intent = new Intent();
intent.SetFlags(ActivityFlags.NewTask);
intent.SetClass(this, typeof(RouteCheckoutRed));
tabSpec = tabHost.NewTabSpec("Red");
tabSpec.SetContent(intent);
tabSpec.SetIndicator("Red (" + RedCount + ")");
tabHost.AddTab(tabSpec);
我尝试了以下 java 代码。没用。
TextView txt = tabHost.GetChildAt(1).FindViewById(<Here I dont know what control I should give since there is no title defined>);
在Xamarin.Android中应该是:
TextView txt = tabHost.GetChildAt(0).FindViewById<TextView>(Resource.Id.title);
或者
TextView txt = (TextView)tabHost.TabWidget.GetChildTabViewAt(0).FindViewById<TextView>(Resource.Id.title);
在 Xamarin 中更新 TabHost 指示器 Android:
ViewGroup tabInidcator = (ViewGroup)tabHost.TabWidget.GetChildTabViewAt(0);
ImageView img = (ImageView)tabInidcator.GetChildAt(0);
TextView title = (TextView) tabInidcator.GetChildAt(1);
title.Text = "xyz";
我需要动态更改选项卡指示器。我可以在 Java 中找到答案,但在 Xamarin 中找不到。我尝试使用 java 代码,但没有用。这是我的代码。
布局代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/llcheckoutmiddle"
android:layout_below="@id/llcheckouttop">
<TabHost
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabHostChkOut">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/linearLayout1">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="50dp" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</TabHost>
</LinearLayout>
Activity代码:
LocalActivityManager localActMgr = new LocalActivityManager(this, false);
localActMgr.DispatchCreate(bundle);
TabHost tabHost = FindViewById<TabHost>(Resource.Id.tabHostChkOut);
tabHost.Setup(localActMgr);
TabHost.TabSpec tabSpec = null;
Intent intent = new Intent();
intent = new Intent();
intent.SetFlags(ActivityFlags.NewTask);
intent.SetClass(this, typeof(RouteCheckoutExc));
tabSpec = tabHost.NewTabSpec("Exc");
tabSpec.SetContent(intent);
tabSpec.SetIndicator("Exc (" + ExcCount + ")");
tabHost.AddTab(tabSpec);
intent = new Intent();
intent.SetFlags(ActivityFlags.NewTask);
intent.SetClass(this, typeof(RouteCheckoutRed));
tabSpec = tabHost.NewTabSpec("Red");
tabSpec.SetContent(intent);
tabSpec.SetIndicator("Red (" + RedCount + ")");
tabHost.AddTab(tabSpec);
我尝试了以下 java 代码。没用。
TextView txt = tabHost.GetChildAt(1).FindViewById(<Here I dont know what control I should give since there is no title defined>);
在Xamarin.Android中应该是:
TextView txt = tabHost.GetChildAt(0).FindViewById<TextView>(Resource.Id.title);
或者
TextView txt = (TextView)tabHost.TabWidget.GetChildTabViewAt(0).FindViewById<TextView>(Resource.Id.title);
在 Xamarin 中更新 TabHost 指示器 Android:
ViewGroup tabInidcator = (ViewGroup)tabHost.TabWidget.GetChildTabViewAt(0);
ImageView img = (ImageView)tabInidcator.GetChildAt(0);
TextView title = (TextView) tabInidcator.GetChildAt(1);
title.Text = "xyz";