Android -图标上带有中断事件传播的自定义选项卡标题

kninwzqo  于 2022-11-20  发布在  Android
关注(0)|答案(1)|浏览(109)

我有一个自定义布局作为我的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" />

选项卡项标题.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上不起作用?

6l7fqoea

6l7fqoea1#

我找到解决办法了!

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

在这片土地上

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

相关问题