gpt4 book ai didi

android - 动态更新 TabWidget 图标?

转载 作者:行者123 更新时间:2023-11-29 15:33:06 26 4
gpt4 key购买 nike

是否可以更新 TabWidget 图标/指示器?如果是这样,当您通过 Intent 创建 TabContent 时如何?

感谢@Bart 对下面的答案进行编辑

通用代码:

主要 Activity :

public class TestActivity extends TabActivity {

public int i;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//TabHost mTabHost = (TabHost) findViewById(android.R.id.tabhost);

TabHost mTabHost = getTabHost();

mTabHost.addTab(mTabHost.newTabSpec("tab1").setContent(
new Intent(this, OneActivity.class)).setIndicator("One"));
mTabHost.addTab(mTabHost.newTabSpec("tab2").setContent(
new Intent(this, TwoActivity.class)).setIndicator("Two"));

changeTitle(0, 20);
}

public void changeTitle(int cnt, int i){
View v = getTabWidget().getChildAt(cnt);
TextView tv = (TextView) v.findViewById(android.R.id.title);
tv.setText("One ("+i+")");
}

OneActivity(子 Activity ):

public class OneActivity extends Activity {
TextView tv;
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one);

tv = (TextView) findViewById(R.id.tv);
btn = (Button) findViewById(R.id.btn);

btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

int i = Integer.parseInt((String) tv.getText());
i++;
tv.setText(""+i);

TestActivity parent = OneActivity.this.getParent();
parent.changeTitle(0,i);

}
});
}

我想在标签的标题中显示数字

最佳答案

这是可能的,但有点棘手:

ViewGroup vg = (ViewGroup) getTabHost().getTabWidget().getChildAt(0);
TextView tv = (TextView) vg.getChildAt(1);

调用 getChildAt() 时要注意索引。最好的方法永远是调试和检查。

因为 1.6 TabWidget 有一个方法 getChildTabViewAt 多亏了它你可以跳过第一行并写:

ViewGroup vg = (ViewGroup) getTabHost().getTabWidget().getChildTabViewAt(0);




我还附上了 Android SDK 的源代码来展示 TabWidget 图标是如何构建的:

View tabIndicator = inflater.inflate(R.layout.tab_indicator, 
mTabWidget, // tab widget is the parent
false); // no inflate params

final TextView tv = (TextView) tabIndicator.findViewById(R.id.title);
tv.setText(mLabel);
final ImageView iconView = (ImageView) tabIndicator.findViewById(R.id.icon);
iconView.setImageDrawable(mIcon);

如您所见,它包含一个 TextView 和一个 ImageView。

关于android - 动态更新 TabWidget 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com