Dynamische Aktualisierung von tabwidget -Symbolen?
-
26-09-2019 - |
Frage
Ist es möglich, die tabWidget -Symbole/-anzeigen zu aktualisieren? Wenn ja, wie, wenn Sie Tabcontent durch Absichten erstellen?
Bearbeitet unten mit Antwort dank @Bart
Generischer Code:
Hauptaktivität:
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+")");
}
}
ONEATAKTIVITÄT (MOKINAKTIVITÄT):
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);
}
});
}
}
Ich möchte die Nummer im Registerkarte zeigen
Lösung
Es ist möglich, aber es ist ein bisschen schwierig:
ViewGroup vg = (ViewGroup) getTabHost().getTabWidget().getChildAt(0);
TextView tv = (TextView) vg.getChildAt(1);
Sie sollten auf Indizes achten, während Sie GetChildat () anrufen. Der beste Weg ist immer, zu debuggen und zu überprüfen.
Da 1.6 Tabwidget eine Methode hat, dank der erste Zeile und schreiben Sie: Schreiben:
ViewGroup vg = (ViewGroup) getTabHost().getTabWidget().getChildTabViewAt(0);
Ich füge auch den Quellcode von Android SDK hinzu, um anzuzeigen, wie tabWidget -Symbole erstellt werden:
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);
Wie Sie sehen können, enthält es eine Textansicht und ImageView.
Andere Tipps
Versuchen Sie, das ImageView so zu erhalten
ImageView v = (ImageView)tabActivity.getTabHost().getTabWidget().getChildTabViewAt(i).findViewById(android.R.id.icon);
v.setImageDrawable(getResources().getDrawable(R.drawable.newIcon));
Angesichts einer Arrays für Titel und Ikonen
for (int i = 0; i < numTabs; i++ ) {
TabSpec spec = host.newTabSpec(String.valueOf(i)); //sets tab index
Drawable icon = res.getDrawable(icons[i]); //sets the icon
// set tab text and icon
spec.setIndicator(titles[i], icon); //sets the title
host.addTab(spec);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow