2017-02-22 117 views
0

我使用的标签布局,这里是我的代码删除TabLayout左右填充

<android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabGravity="center" 
     app:tabMode="fixed" 

     android:minHeight="?attr/actionBarSize" 
     app:tabTextColor="#000" 
     app:tabSelectedTextColor="#fff" 
     app:tabIndicatorColor="@android:color/white" 

     android:clipToPadding="false" 
     /> 

添加标签这样

//创建标签

的TextView标签=(TextView的)LayoutInflater。 from(this).inflate(R.layout.custom_tab,null); tab.setText(“Home”); tab.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.ic_home_black_24dp,0,0); tabLayout.addTab(tabLayout.newTab()。setCustomView(tab));

TextView tab2 = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
tab2.setText("Report"); 
tab2.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.ic_trending_up_black_24dp, 0, 0); 
tabLayout.addTab(tabLayout.newTab().setCustomView(tab2)); 

TextView tab3 = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
tab3.setText("Medicine"); 
tab3.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.ic_home_black_24dp, 0, 0); 
tabLayout.addTab(tabLayout.newTab().setCustomView(tab3)); 

TextView tab4 = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
tab4.setText("More"); 
tab4.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.ic_trending_up_black_24dp, 0, 0); 
tabLayout.addTab(tabLayout.newTab().setCustomView(tab4)); 

,这里是我的手机屏幕截图

https://i.stack.imgur.com/kYNs1.png 

两件事 我1.How可以去除左和标签布局的右侧,其正在采取的空间?

我2.How可以更改活动和非活动标签的文字和图标的颜色

+0

使用app:tabPadding属性 –

回答

5
  1. 以去除标签填充在标签布局

    在你TabLayout你必须设置tabPaddingEnd和tabPaddingStart到0dp。通过

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 
    
    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setOnTabSelectedListener(
         new TabLayout.ViewPagerOnTabSelectedListener(viewPager) { 
    
          @Override 
          public void onTabSelected(TabLayout.Tab tab) { 
           super.onTabSelected(tab); 
           int tabIconColor = ContextCompat.getColor(context, R.color.tabSelectedIconColor); 
           tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN); 
          } 
    
          @Override 
          public void onTabUnselected(TabLayout.Tab tab) { 
           super.onTabUnselected(tab); 
           int tabIconColor = ContextCompat.getColor(context, R.color.tabUnselectedIconColor); 
           tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN); 
          } 
    
          @Override 
          public void onTabReselected(TabLayout.Tab tab) { 
           super.onTabReselected(tab); 
          } 
         } 
    ); 
    
0

对于TabLayout的所选标签的图标的

<android.support.design.widget.TabLayout 
app:tabPaddingStart="0dp" 
app:tabPaddingEnd="0dp"/> 
  • 变色调整pading可以使用app:tabMinWidth像或tabPaddingStart/tabPaddingEnd/tabPaddingTop/tabPaddingBottom

    <android.support.design.widget.TabLayout 
         android:id="@+id/tab_layout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         app:tabGravity="center" 
         app:tabMode="fixed" 
         app:tabMinWidth="50dp" 
         app:tabPaddingBottom="1dp" 
         app:tabPaddingEnd="1dp" 
         app:tabPaddingStart="1dp" 
         app:tabPaddingTop="1dp" 
         android:minHeight="?attr/actionBarSize" 
         app:tabTextColor="#000" 
         app:tabSelectedTextColor="#fff" 
         app:tabIndicatorColor="@android:color/white" 
    
         android:clipToPadding="false" 
         /> 
    

    对于简单地就可以使用下面的代码颜色

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
        <item android:drawable="@color/tab_background_selected" android:state_selected="true"/> 
        <item android:drawable="@color/tab_background_unselected"/> 
    </selector> 
    

    和它绘制保存为tab_color_selector.xml

    ,并使用

    app:tabBackground="@drawable/tab_color_selector" 
    

    所以总的代码将

    <android.support.design.widget.TabLayout 
         android:id="@+id/tab_layout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         app:tabGravity="center" 
         app:tabMode="fixed" 
         app:tabMinWidth="50dp" 
         android:minHeight="?attr/actionBarSize" 
         app:tabTextColor="#000" 
         app:tabSelectedTextColor="#fff" 
         app:tabIndicatorColor="@android:color/white" 
         app:tabBackground="@drawable/tab_color_selector" 
         android:clipToPadding="false" 
         /> 
    

    给颜色tab_background_selectedtab_background_unselected#000000。或使用#000000,而不是直接@color/tab_background_unselected

  • +0

    它从左右两边取空间 –

    0

    试试这个,

    <android.support.design.widget.TabLayout 
         android:id="@+id/tab_layout" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:background="@drawable/bg_forum_tab" 
         app:tabIndicatorColor="@color/colorBtnBg" 
         app:tabIndicatorHeight="0dp" 
         app:tabPaddingBottom="-1dp" 
         app:tabPaddingEnd="-1dp" 
         app:tabPaddingStart="-1dp" 
         app:tabPaddingTop="-1dp" 
         style="@style/CustomTabLayoutStyle" 
         app:tabTextColor="@color/colorWhite" /> 
    

    设置tabPaddingStart/tabPaddingEnd/tabPaddingTop/tabPaddingBottom这样。

    Styles: 
    
        <style name="CustomTabLayoutStyle" parent="Base.Widget.Design.TabLayout"> 
         <item name="tabSelectedTextColor">@color/tab_text_selected</item> 
         <item name="tabIndicatorColor">@color/tab_indicator</item> 
         <item name="tabTextAppearance">@style/CustomTabTexStyle</item> 
        </style> 
    
        <style name="CustomTabTexStyle" parent="TextAppearance.Design.Tab"> 
         <item name="android:textSize">14sp</item> 
         <item name="android:textColor">@color/tab_text</item> 
    
         ... 
        </style>