如何更新 tabhost android 中的特定选项卡图标?
How to update specific tab icon in tabhost android?
我有 4 个标签,其中之一是通知图标。默认情况下使用选项卡规范设置所有图标。
spec = host.newTabSpec("Tab Four");
spec.setContent(R.id.tab5);
spec.setContent(new Intent(getApplicationContext(), ICNotificationActivity.class));
spec.setIndicator("", getResources().getDrawable(R.drawable.tab_notification_noted));
host.addTab(spec);
延迟后,我必须用另一个资源文件更新选项卡 4 图标。如何更新tabhost?是否有可用的更新功能,如 host.addTab(spec)?
我在这里循环所有选项卡并更改所选选项卡的颜色和图标。
在循环中,我首先将所有选项卡设置为未选中,而不是仅将选定的选项卡设置为更新的图标和颜色。
private void setTabColor(TabHost tabhost, int position) {
for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
// unselected
tabhost.getTabWidget().getChildAt(i)
.setBackgroundResource(R.drawable.tab_unselected);
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(R.id.tvTabTitle);
tv.setTextColor(getResources().getColor(R.color.text_white));
}
if (position > 0) {
// selected
tabhost.getTabWidget().setCurrentTab(position);
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
.setBackgroundResource(R.drawable.tab_selected);
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(tabhost.getCurrentTab()).findViewById(R.id.tvTabTitle);
tv.setTextColor(getResources().getColor(R.color.tab_color));
}
}
you can call above method by using
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
//Do something here
setTabColor(myTabHost, myTabPosition);
}
}, 5000);
我有 4 个标签,其中之一是通知图标。默认情况下使用选项卡规范设置所有图标。
spec = host.newTabSpec("Tab Four");
spec.setContent(R.id.tab5);
spec.setContent(new Intent(getApplicationContext(), ICNotificationActivity.class));
spec.setIndicator("", getResources().getDrawable(R.drawable.tab_notification_noted));
host.addTab(spec);
延迟后,我必须用另一个资源文件更新选项卡 4 图标。如何更新tabhost?是否有可用的更新功能,如 host.addTab(spec)?
我在这里循环所有选项卡并更改所选选项卡的颜色和图标。 在循环中,我首先将所有选项卡设置为未选中,而不是仅将选定的选项卡设置为更新的图标和颜色。
private void setTabColor(TabHost tabhost, int position) {
for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
// unselected
tabhost.getTabWidget().getChildAt(i)
.setBackgroundResource(R.drawable.tab_unselected);
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(R.id.tvTabTitle);
tv.setTextColor(getResources().getColor(R.color.text_white));
}
if (position > 0) {
// selected
tabhost.getTabWidget().setCurrentTab(position);
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
.setBackgroundResource(R.drawable.tab_selected);
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(tabhost.getCurrentTab()).findViewById(R.id.tvTabTitle);
tv.setTextColor(getResources().getColor(R.color.tab_color));
}
}
you can call above method by using
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
//Do something here
setTabColor(myTabHost, myTabPosition);
}
}, 5000);