如何更新tabhost android中的特定选项卡图标?

时间:2017-09-15 07:25:33

标签: android android-tabhost

我有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);

延迟后,我必须用另一个资源文件更新tab 4图标。如何更新tabhost?是否有任何更新功能,如 host.addTab(spec)

1 个答案:

答案 0 :(得分:1)

这里我循环所有标签并更改所选标签的颜色和图标。 在循环中,我将所有选项卡设置为首先取消选中,而不是仅将所选选项卡设置为更新的图标和颜色。

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));
    }

}
  

您可以使用

调用上述方法
    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
    @Override
    public void run() {
        //Do something here
     setTabColor(myTabHost, myTabPosition);
    }
}, 5000);