【问题标题】:TabLayout without using ViewPager不使用 ViewPager 的 TabLayout
【发布时间】:2016-02-12 07:26:36
【问题描述】:

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

我想使用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>

【问题讨论】:

标签: android xml onclick android-tablayout


【解决方案1】:

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

        }
    });
}

【讨论】:

  • 是否可以在没有分页器的情况下以上述方式为标签传递自定义布局?
  • 是的,你可以。 .尝试使用。 tabLayout.addView(View)
  • 不知道为什么很难找到答案,但非常感谢您发帖。附带说明一下,我还设置了标签标签 (setTag()),以便我可以参考被点击的标签。
  • 使用 addOnTabSelectedListener 代替 setOnTabSelectedListener
  • @EleojasmilJMilagrosa, @Min2 :您只能通过提到的addView 方法添加instance of TabItem
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多