Nitesh Sharma
Nitesh Sharma

Reputation: 139

Remove TabLayout left and right padding

I am using tab layout and here is my code

  <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"
        />

Adding tab like this

//Creating tab

TextView tab = (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));

and here is my phone screenshot

https://i.sstatic.net/kYNs1.png

Two things 1.How can I remove space which is taking from left and right of tab layout ?

2.How can I change the color of text and icon of active and inactive tab

Upvotes: 3

Views: 10200

Answers (4)

LloydFinch
LloydFinch

Reputation: 17

you can add the attr:

 app:tabIndicatorFullWidth="false"
 app:tabIndicatorHeight="0dp"
 app:tabMinWidth="0dp"
 app:tabPadding="0dp"
 app:tabPaddingBottom="0dp"
 app:tabPaddingEnd="0dp"
 app:tabPaddingStart="0dp"
 app:tabPaddingTop="0dp"

Upvotes: 0

Akshay Tilekar
Akshay Tilekar

Reputation: 2010

  1. to remove Padding from Tabs in Tab Layout

    In your TabLayout you have to set tabPaddingEnd and tabPaddingStart to 0dp.

    <android.support.design.widget.TabLayout
    app:tabPaddingStart="0dp"
    app:tabPaddingEnd="0dp"/>
    
  2. change color of icon of the selected tab of TabLayout by

    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);
                }
            }
    );
    

Upvotes: 15

Kiran Benny Joseph
Kiran Benny Joseph

Reputation: 6813

For adjust pading you can use app:tabMinWidth like or 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"
        />

For simply you can use below code for color

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

and save it in drawable as tab_color_selector.xml

and use

app:tabBackground="@drawable/tab_color_selector"

so total code will be

<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"
        />

Give colors in tab_background_selected and tab_background_unselected like #000000. or use #000000 directly instead of @color/tab_background_unselected

Upvotes: 0

Komal12
Komal12

Reputation: 3348

Try this,

    <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" />

Set tabPaddingStart/tabPaddingEnd/tabPaddingTop/tabPaddingBottom like this.

    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>

Upvotes: 0

Related Questions