2016-11-28 9 views
0

でtabTextAppearanceに代わる私が知っている、我々はTabLayout上のテキストの外観を設定するためのプロパティを持っている:アンドロイド:javaの

app:tabTextAppearance="@style/TextAppearance.AppCompat.Small" 

プログラムでそれを設定するためのJavaで任意の代替方法?

PS:私はTabのカスタムビューを使用していませんが、デフォルトのものはありません。

+0

を好きな複数のタブレイアウト&セットを持っている場合は、カスタムTabLayoutを使用することができますサポート/ + /マスター/デザイン/ src /アンドロイド/サポート/デザイン/ウィジェット/ TabLayout.java)私は言うことができる現在、プログラムでそれを行う方法はありません。しかし、私は 'view'を返す' view''の 'getChildAt()'プロパティを使うことができ、 'view'を使って' TextAppearance'を設定できると思います。 –

+0

@RaviRupareliyaはい私はコードを見ました..私の.. ..( –

+0

あなたが変更する必要があるスタイルは、あなたがテキストサイズ、書体、太字などを設定する必要がありましたか? –

答えて

0

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> 
0

あなたは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); 
     } 
    } 
} 
関連する問題