不使用 ViewPager 的 TabLayout

我想实现一个 TabLayout,因为它很简单,但我发现所有的教程涉及一个 ViewPager。我只是想要像 OnClickListener这样的东西,如果我点击 Add图标,它会显示一个祝酒词,显示“ tab 1”,如果我点击一个日历图标,它会显示一个祝酒词,显示“ tab 2”

我想使用 TabLayout,因为它处理设备旋转。

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>
50438 次浏览

我找到了 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) {


}
});
}

使用 Tab.getPosition而不是 TabLayout.getSelectedTabPosition方法来替代已接受答案的另一种解决方案。

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