相关文章推荐
傻傻的凳子  ·  TabLayout ...·  1 周前    · 
傻傻的凳子  ·  azul zulu OpenJDK 17 ...·  7 月前    · 
傻傻的凳子  ·  StackExchange.Redis ...·  8 月前    · 
威武的香瓜  ·  [转]Entity Framework ...·  7 小时前    · 

一,简介TabLayout是Android的Design库中的控件,常用于导航栏的实现;常用组合一般TabLayout结合ViewPager+Fragment的使用实现滑动的标签(头部导航栏或者标签栏)选择器。这篇不讲具体使用,主要讲如何单独监听每个tab的点击事件;

二,单独监听每个tab的点击事件

目前亲测的有两种:

2.1,单独使用TabLayout,代码中动态设置TabLayout的tab,然后为每个Tab单独设置点击事件;

xml布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tl_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Kotlin代码

class MainActivity : AppCompatActivity() {
    var tl_demo: TabLayout? = null
    override fun onCreate(savedInstanceState: Bundle?) {   
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    tl_demo = findViewById(R.id.tl_test)
    var tab1 : TabLayout.Tab? = tl_demo!!.newTab().setText("第一个tab")
    var tab2 : TabLayout.Tab? = tl_demo!!.newTab().setText("第二个tab")
    var tab3 : TabLayout.Tab? = tl_demo!!.newTab().setText("第三个tab")
    var tab4 : TabLayout.Tab? = tl_demo!!.newTab().setText("第四个tab")
    tl_demo!!.addTab(tab1!!)
    tl_demo!!.addTab(tab2!!)
    tl_demo!!.addTab(tab3!!)
    tl_demo!!.addTab(tab4!!)
    tab1.view?.setOnClickListener { Toast.makeText(this,"tab1",Toast.LENGTH_LONG).show() }

2.2,静态设置TabLayout的tab,为单个tab设置点击事件,

xml布局如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tl_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab1" />
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab2" />
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab3" />
    </com.google.android.material.tabs.TabLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Kotlin代码实现Tab点击事件

class MainActivity : AppCompatActivity() {
    var tl_demo: TabLayout? = null
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    tl_demo = findViewById(R.id.tl_test)
    var tab1: TabLayout.Tab? = tl_demo!!.getTabAt(0)
    tab1!!.view?.setOnClickListener { Toast.makeText(this,"tab1",Toast.LENGTH_LONG).show() }
     for (int i = 0; i < tabLayout.getTabCount(); i++) {
            TabLayout.Tab tab = tabLayout.getTabAt(i);
                                    这个是对tablayout的监听事件mTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        Toast.makeText(mContext, "选中的"+t
  <com.google.android.material.tabs.TabLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabRippleColor = "@android:color/transparent"
    an...
                                    1.tablayout的tab选中的监听addOnTabSelectedListener项目中的界面需要用viewpager+tablayout+fragment来实现 实现起来相对来说很简单,但是现在有的需求是在第一个fragment的外面显示一个按钮,在其他的页面不显示这个时候就用到了这个监听方法,先看一下图片听方法,先看一下图片 图中可以看到只有学生界面才有筛选按钮 但是后面都没有 一切bb都是没有用的 上代码
2.修改tablayout的下划线指定宽度
加上去就搞定
 当然了 具体可以参
                                    我在学习Android的路径中遇到了另一个问题。我用CSV文件的内容制作了一个动态的TableLayout。我需要当我点击/触摸表格中的一行时,颜色应该改变,稍后点击按钮可以获得同一行的内容。现在我对第一部分感到困惑,当然我不知道如何获得该行的数据。我宣布的LinearLayout表里面,这也是一个滚动型的内部,我的布局具有以下属性:android:id="@+id/scrollMotors"an...
                                     viewpager+tablayout都不陌生了。在很多地方都有用到过。这两天碰到个需求要求点击tablayout时出现下拉框选择分类然后动态刷新viewpager的当前界面。
首先对viewpager+tablayout做一个简单用法的总结。
1、在界面布局文件xml中添加
      &lt;android.support.design.widget.TabLayout
                                    Android design支持库中提供的TabLayout默认把Tab的OnClickListener给写死了,但是在项目中有时候需要做一些控制处理,比如选中某一个Tab之前必须是先登录,未登录的情况需要跳转到登录界面。
我们可以通过给TabLayout中的TabView重设OnClickListener解决这个问题
重新设置点击事件
                                    一.项目简介和思路
 上次我们已经实现了上拉刷新和下拉加载,今天接着来。之前的点击的不同tab的内容都是一样的,现在来实现点击不同的tab显示不用内容的数据。还有一个功能是给recycle写点击监听事件。
二.项目流程
1.tablayout的点击事件
public class MainActivity extends AppCompatActivity {
    privat
<android.support.design.widget.TabLayout
	android:id="@+id/tabLayout2"
	android:layout_width="match_parent"
	android:layout_height="30dp"
	app:tabBackground="@color/transparent"
	app:tabIndicator="@drawable/
 
推荐文章