Android 不使用ViewPager的表格布局

Android 不使用ViewPager的表格布局,android,xml,onclick,android-tablayout,Android,Xml,Onclick,Android Tablayout,我想实现一个TabLayout,因为它很简单,但我找到的所有教程都涉及一个ViewPager。我只想要类似于OnClickListener的东西,如果我单击Add图标,它将显示一个显示“tab 1”的toast,如果我单击日历图标,它将显示一个显示“tab 2”的toast 我想使用TabLayout,因为它处理设备旋转 Main\u activity.java <RelativeLayout xmlns:android="http://schemas.android.com/apk/re

我想实现一个
TabLayout
,因为它很简单,但我找到的所有教程都涉及一个
ViewPager
。我只想要类似于
OnClickListener
的东西,如果我单击
Add
图标,它将显示一个显示“tab 1”的toast,如果我单击日历图标,它将显示一个显示“tab 2”的toast

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

Main\u activity.java

<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>
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TabLayout TabLayout=(TabLayout)findViewById(R.id.tabs);
//添加五个选项卡。三个有图标,两个有文本标题
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(“发送”);
tabLayout.addTab(tabLayout.newTab().setText(“发送和发送”);
}
}
活动\u 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>

我找到了
setOnAbselectedListener

tabLayout.addOnTabSelectedListener(新的tabLayout.OnTabSelectedListener(){
@凌驾
已选择的公共选项卡(TabLayout.Tab){
如果(tabLayout.getSelectedTabPosition()==0){
Toast.makeText(MainActivity.this,“Tab”+tabLayout.getSelectedTabPosition(),Toast.LENGTH\u LONG.show();
}else if(tabLayout.getSelectedTabPosition()==1){
Toast.makeText(MainActivity.this,“Tab”+tabLayout.getSelectedTabPosition(),Toast.LENGTH\u LONG.show();
}else if(tabLayout.getSelectedTabPosition()==2){
Toast.makeText(MainActivity.this,“Tab”+tabLayout.getSelectedTabPosition(),Toast.LENGTH\u LONG.show();
}else if(tabLayout.getSelectedTabPosition()==3){
Toast.makeText(MainActivity.this,“Tab”+tabLayout.getSelectedTabPosition(),Toast.LENGTH\u LONG.show();
}else if(tabLayout.getSelectedTabPosition()==4){
Toast.makeText(MainActivity.this,“Tab”+tabLayout.getSelectedTabPosition(),Toast.LENGTH\u LONG.show();
}
}
@凌驾
已选择的公共选项卡(TabLayout.Tab){
}
@凌驾
已重新选择公共选项卡(TabLayout.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) {
    }
});

你可以在这里引用:我个人仍然会使用viewpager进行过渡动画,但是禁用用户滑动的功能:是否可以在没有pager的情况下以上述方式传递选项卡的自定义布局?是的,你可以。尝试使用
tabLayout.addView(View)
不知道为什么很难找到答案,但非常感谢您的发布。另外,我还设置了tab标签(setTag()),以便可以引用正在单击的标签setOnTabSelectedListener@EleojasmilJMilagrosa,@Min2:您只能通过前面提到的
addView
方法添加TabItem的
实例。