這是一個愚蠢的問題,添加和刪除標籤是一個壞主意,因爲如果你使用的是片段,你會最終刪除並重新添加您的片段與其選項卡。使用自定義視圖看起來效果更好,並且額外的獎勵爲您提供更大的自定義。
下面是如何使標籤與外觀和行爲等同於默認的自定義視圖:
ActionBar bar = getActionBar();
TabListener tabListener = new TabListener() {
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
Tab tab1 = bar.newTab()
.setText("Info")
.setTabListener(tabListener)
.setCustomView(makeTabDummy("Info", android.R.drawable.ic_menu_info_details));
bar.addTab(tab1);
,這裏是像素完美的虛擬視圖:
private TextView makeTabDummy(String text, int icon) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setTextColor(0xffffffff);
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
tv.setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0);
tv.setGravity(Gravity.CENTER);
return tv;
}
從這裏我們可以更改標籤上的圖標和文本,而不會有任何問題。例如:
TextView tv = (TextView) tab1.getCustomView();
tv.setText("change the text!");
tv.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.btn_star_big_on, 0, 0, 0);
......和一切正常,因爲它應該
互聯網搜索,請投此問題: http://code.google.com/p/android/問題/詳細信息?id = 17129&q = actionbar&colspec = ID%20Type%20Status%20Owner%20Summary%20Stars – xandy 2011-10-05 04:46:06