Изменить стиль шрифта на вкладках панели действий с помощью Sherlock
Я прочитал это:
Android - настройка вкладок "Шерлок" на панели действий
И еще много ссылок, я выяснил, что такое StackedBackground и что такое Background, но я не могу найти, как удалить все заглавные буквы из вкладок и получить обычные шрифты или изменить размер шрифта на вкладках панели действий.
Кроме того, я хотел бы изменить цвет моего синего подчеркивания, и если я использую 9 патчей, я получаю ситуацию, аналогичную приведенной выше ссылке, получаю строку ниже текста, но не ниже в нижней части вкладки, и оригинальная синяя линия остается, поэтому я получаю две линии.
Пока у меня есть это, но я пробовал размеры текста и все виды цветов, но ничего:
<style name="CustomActivityTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarTabTextStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/grey</item>
<item name="android:backgroundStacked">@drawable/ab_transparent_example</item>
<item name="android:textAllCaps">false</item>
<item name="android:textSize">10dp</item>
</style>
Изменить: я только что понял, что я могу удалить все заглавные буквы, используя "android: actionBarTabTextStyle", но теперь он берет цвет фона из "MyActionBar" ... Итак, как установить списки actionBarTabTextStyle и actionBarStyle в некоторой иерархии, этот текст сокращен и не уменьшен в заглавных буквах, но это не фон из стиля "MyActionBar".
Редактировать 2: Я попробовал еще несколько 9-патч-изображений, и это выглядит ужасно, но я просто не могу избавиться от синих линий...
1 ответ
Я знаю, что об этом спрашивали много лет назад, но я потратил некоторое время, пытаясь разобраться в этом, так что это для любого, кто нашел этот вопрос и все еще хочет знать ответ.
Сначала создайте XML-файл со следующим: tab_title.xml
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/action_custom_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Custom title"
android:textColor="#fff"
android:textSize="18sp"
android:paddingTop="5dp" />
Затем в классе, где вы создаете экземпляр ActionBar, используйте этот код, чтобы установить текст на каждой из вкладок. (Этот пример использует http://actionbarsherlock.com/.)
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
String[] tabNames = {"Tab 1","Tab 2","Tab 3"};
for(int i = 0; i<bar.getTabCount(); i++){
LayoutInflater inflater = LayoutInflater.from(this);
View customView = inflater.inflate(R.layout.tab_title, null);
TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title);
titleTV.setText(tabNames[i]);
//Here you can also add any other styling you want.
bar.getTabAt(i).setCustomView(customView);
}
Надеюсь, это поможет любому, у кого были такие же проблемы, как и я.
// обновление 1/6/2015
если вы используете TabLayout в предварительном просмотре Android M и хотите изменить шрифт, вы должны добавить новый цикл for к предыдущему решению, например так:
private void changeTabsFont() {
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildsCount = vgTab.getChildCount();
for (int i = 0; i < tabChildsCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(Font.getInstance().getTypeFace(), Typeface.NORMAL);
}
}
}
}