でtabTextAppearanceに代わる私が知っている、我々はTabLayout上のテキストの外観を設定するためのプロパティを持っている:アンドロイド:javaの
app:tabTextAppearance="@style/TextAppearance.AppCompat.Small"
プログラムでそれを設定するためのJavaで任意の代替方法?
PS:私はTabのカスタムビューを使用していませんが、デフォルトのものはありません。
でtabTextAppearanceに代わる私が知っている、我々はTabLayout上のテキストの外観を設定するためのプロパティを持っている:アンドロイド:javaの
app:tabTextAppearance="@style/TextAppearance.AppCompat.Small"
プログラムでそれを設定するためのJavaで任意の代替方法?
PS:私はTabのカスタムビューを使用していませんが、デフォルトのものはありません。
CustomView
を使用してプログラムでスタイルを追加する方法があります.にTextView
を設定し、TextViewにスタイルを適用します。
たとえば、
mTabLayout = (TabLayout) findViewById(R.id.tablayout);
mTabLayout.setOnTabSelectedListener(new OnTabSelectedListener());
int tabCount = mTabLayout.getTabCount();
for (int i = 0; i < tabCount; i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
if (tab != null) {
TextView tabTextView =
(TextView) LayoutInflater.from(this).inflate(R.layout.tab_item, mTabLayout, false);
tabTextView.setText(tab.getText());
// First tab is the selected tab, so if i==0 then set Tabs_Selected style
tabTextView.setTextAppearance(getAppContext(), i == 0 ? R.style.TextAppearance_Tabs_Selected
: R.style.TextAppearance_Tabs);
tab.setCustomView(tabTextView);
}
}
class OnTabSelectedListener implements TabLayout.OnTabSelectedListener {
public void onTabSelected(TabLayout.Tab selectedTab) {
int tabCount = mTabLayout.getTabCount();
for (int i = 0; i < tabCount; i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
View tabView = tab != null ? tab.getCustomView() : null;
if (tabView instanceof TextView) {
((TextView) tabView).setTextAppearance(getAppContext(), selectedTab.equals(tab)
? R.style.TextAppearance_Tabs_Selected
: R.style.TextAppearance_Tabs);
}
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
tab_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tab_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Tab 1" />
のstyles.xml
<style name="TextAppearance.Tabs" parent="TextAppearance.Design.Tab">
<item name="android:textSize">12sp</item>
<item name="android:textColor">@android:color/white</item>
</style>
<style name="TextAppearance.Tabs.Selected">
<item name="android:textStyle">bold</item>
</style>
あなたはTabLayout &から子ビューを取得することができますTextViewのインスタンス&は値
を設定しますViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int count = 0; count < tabsCount; count++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(count);
int tabChildsCount = vgTab.getChildCount();
for (int childCount = 0; childCount < tabChildsCount; childCount++) {
View tabViewChild = vgTab.getChildAt(childCount);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTextSize(16.0);
}
}
}
あなたは[ソースコード](https://android.googlesource.com/platform/frameworks/から
import android.content.Context;
import android.graphics.Typeface;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.view.ViewGroup;
public class CustomTabView extends TabLayout {
private Typeface mTypeface;
public CustomTabView(Context context) {
super(context);
}
public CustomTabView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomTabView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setupWithViewPager(@Nullable ViewPager viewPager) {
super.setupWithViewPager(viewPager);
this.removeAllTabs();
ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0);
PagerAdapter adapter = viewPager.getAdapter();
for (int i = 0, count = adapter.getCount(); i < count; i++) {
Tab tab = this.newTab();
this.addTab(tab.setText(adapter.getPageTitle(i)));
AppCompatTextView view =
(AppCompatTextView) ((ViewGroup) slidingTabStrip.getChildAt(i)).getChildAt(1);
view.setTextSize(16.0);
}
}
}
を好きな複数のタブレイアウト&セットを持っている場合は、カスタムTabLayoutを使用することができますサポート/ + /マスター/デザイン/ src /アンドロイド/サポート/デザイン/ウィジェット/ TabLayout.java)私は言うことができる現在、プログラムでそれを行う方法はありません。しかし、私は 'view'を返す' view''の 'getChildAt()'プロパティを使うことができ、 'view'を使って' TextAppearance'を設定できると思います。 –
@RaviRupareliyaはい私はコードを見ました..私の.. ..( –
あなたが変更する必要があるスタイルは、あなたがテキストサイズ、書体、太字などを設定する必要がありましたか? –