74

I want to implement a TabLayout because it is simple but all the tutorials I have found involve a ViewPager. I just want something like OnClickListener where if I click the Add icon, it will show a toast that displays "tab 1" and if I click a calendar icon, it will show a toast that displays "tab 2"

I would like to use TabLayout because it handles device rotations.

Main_activity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    // Add five tabs.  Three have icons and two have text titles
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.add_live));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.calendar_live));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.group_live));
    tabLayout.addTab(tabLayout.newTab().setText("Send"));
    tabLayout.addTab(tabLayout.newTab().setText("Send & Post"));

}

}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/tools">

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

</RelativeLayout>
jungledev
  • 4,195
  • 1
  • 37
  • 52
Eleojasmil J Milagrosa
  • 1,944
  • 1
  • 13
  • 15
  • u may refer here : http://androidexample.com/Tab_Layout_%7C_TabBar_-_Android_Example/index.php?view=article_discription&aid=103&aaid=125 – User Learning Nov 11 '15 at 09:09
  • 1
    I would still use a viewpager for the transition animations personally, but disable the ability for the user to swipe: http://stackoverflow.com/a/9650884/1219389 – PPartisan Nov 11 '15 at 09:12

2 Answers2

99

I found addOnTabSelectedListener:

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            if(tabLayout.getSelectedTabPosition() == 0){
                Toast.makeText(MainActivity.this, "Tab " + tabLayout.getSelectedTabPosition(), Toast.LENGTH_LONG).show();
            }else if(tabLayout.getSelectedTabPosition() == 1){
                Toast.makeText(MainActivity.this, "Tab " + tabLayout.getSelectedTabPosition(), Toast.LENGTH_LONG).show();
            }else if(tabLayout.getSelectedTabPosition() == 2){
                Toast.makeText(MainActivity.this, "Tab " + tabLayout.getSelectedTabPosition(), Toast.LENGTH_LONG).show();
            }else if(tabLayout.getSelectedTabPosition() == 3){
                Toast.makeText(MainActivity.this, "Tab " + tabLayout.getSelectedTabPosition(), Toast.LENGTH_LONG).show();
            }else if(tabLayout.getSelectedTabPosition() == 4){
                Toast.makeText(MainActivity.this, "Tab " + tabLayout.getSelectedTabPosition(), Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}
Parth Patel
  • 859
  • 2
  • 11
  • 28
Eleojasmil J Milagrosa
  • 1,944
  • 1
  • 13
  • 15
3

An alternative solution to the accepted answer using Tab.getPosition rather than TabLayout.getSelectedTabPosition method.

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        Toast.makeText(
            MainActivity.this, "Tab " + tab.getPosition(), Toast.LENGTH_LONG
        ).show();
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {
    }
});
hata
  • 11,633
  • 6
  • 46
  • 69