【问题标题】:Android - Custom tab header with broken event propagation on iconAndroid - 图标上事件传播中断的自定义选项卡标题
【发布时间】:2022-11-17 20:58:13
【问题描述】:

我有一个自定义布局作为我的 TabLayout 中的选项卡标题。
在布局中,我有一个显示图标的 TextView 和另一个显示文本的 TextView。

如果我单击该图标,TabLayout 将不会显示该选项卡。
如果我单击选项卡上的其他位置,例如文本,TabLayout 将显示该选项卡。

片段.xml

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tlTabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/blue"
        app:tabIndicatorColor="@color/white"
        app:tabMode="fixed"
        app:tabSelectedTextColor="@color/white"
        app:tabTextColor="@color/black" />

tab_item_header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- Icon -->
    <TextView style=""@style/some_style
        android:id="@+id/tvIcon"
        android:layout_width="20sp"
        android:layout_height="20sp"
        android:layout_gravity="center"
        android:background="@color/transparent"
        android:textColor="@color/white"
        android:textSize="20sp"
        android:text="@string/some_icon" />

    <!-- Name -->
    <TextView style="@style/Theme.SubTitle2"
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@color/White74"
        android:text="Name" />
</LinearLayout>

片段.kotlin

TabLayoutMediator(tlTabs!!, viewPager!!) { tab, position ->
    val layoutInflater = LayoutInflater.from(context)
    val view: View = layoutInflater.inflate(R.layout.tab_item_header, null)
    val tvIcon = view.findViewById(R.id.tvIcon) as TextView
    val tvName = view.findViewById(R.id.tvName) as TextView

    tvIcon.text = someMethodToGetCodeForIcon()
    tvName.text = resources.getString(fragmentList[position].second)

    tab.setCustomView(view)
}.attach()

可能是什么问题呢?
如何解决这个问题?
这是否与事件传播有关,因为它在图标 TextView 上不起作用?

【问题讨论】:

    标签: android kotlin event-propagation tablayout


    【解决方案1】:

    我找到了解决方案!

    android:duplicateParentState="true"
    android:clickable="false"
    

    tab_item_header.xml

    enter code here
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <!-- Icon -->
        <TextView style=""@style/some_style
            android:id="@+id/tvIcon"
            android:layout_width="20sp"
            android:layout_height="20sp"
            android:layout_gravity="center"
            android:background="@color/transparent"
            android:textColor="@color/white"
            android:textSize="20sp"
            android:text="@string/some_icon"
            android:duplicateParentState="true"
            android:clickable="false" />
    
        <!-- Name -->
        <TextView style="@style/Theme.SubTitle2"
            android:id="@+id/tvName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textColor="@color/White74"
            android:text="Name"
            android:duplicateParentState="true" />
    </LinearLayout>
    dsvsv
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      相关资源
      最近更新 更多