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的实例。