我有一个带有NAVIGATION_MODE_TABS的ActionBar和我应用程序中的一些实际选项卡。任务非常简单:将选定的标签标题加粗(当标签失去选择时返回正常)。但是实现这样的任务变得非常头疼。 Tab对象没有访问底层TextView的方法。所以我使用了标签标题的自定义视图,但是这个视图定位错误:
请帮忙告诉我:
我正在使用的代码:
在活动中 - >
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
TextView textView = (TextView) tab.getCustomView();
textView.setTypeface(null, Typeface.BOLD);
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
TextView textView = (TextView) tab.getCustomView();
textView.setTypeface(null, Typeface.NORMAL);
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
// probably ignore this event
}
};
for (int i = 0; i < 3; i++) {
TextView textView = (TextView)
getLayoutInflater().inflate(R.layout.tab_title, null);
textView.setText("Tab " + i);
actionBar.addTab(actionBar.newTab()
.setCustomView(textView)
.setTabListener(tabListener));
}
在layout.tab_title - &gt;
中<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 0 :(得分:0)
由于ActionBar.Tab有setText(CharSequence)
,您可以执行onTabSelected
/ onTabUnselected
回调中的跟进操作:
Spannable wordtoSpan = new SpannableString(String.valueOf(tab.getText()));
wordtoSpan.setSpan(new StyleSpan(TypeFace.BOLD), 0, wordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tab.setText(wordtoSpan);
您可能需要使用不同的Spannable,SPAN_X_X常量
编辑:在回调中使用更通用(使用选项卡中已有的文本)。