布局具有以下结构:

 <LinearLayout
        android:id="@+id/card_pack_clickable_area"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@drawable/card_pack_bg_selector">

            <FrameLayout
                android:id="@+id/card_pack_body_frame_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/bg_card_pack_body">

                <...>

            </FrameLayout>

            <TextView
            android:id="@+id/card_pack_percentage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/bg_card_pack_body"/>

  </LinearLayout>


@drawable/card_pack_bg_selector"的内容:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_pressed="true">
      <shape>
          <solid android:color="#536dfe" />
      </shape>
  </item>

  <item android:state_focused="true">
      <shape>
          <solid android:color="#536dfe" />
      </shape>
  </item>

  <item android:drawable="@android:color/transparent"/>

</selector>


问题陈述

因此,LinearLayout card_pack_clickable_area具有两个元素:FrameLayout card_pack_body_frame_layout和TextView card_pack_percentage

我想要实现的是将FrameLayout和TextView作为单个可单击区域,这就是为什么我将它们包装到外部LinearLayout中的原因。

在Java代码中,我在此LinearLayout上放置了onClickListener。实际上,当我在FrameLayout或TextView上单击时,我都获得了onClick事件。

问题在于,LinearLayout不会像应遵循其背景(@drawable/card_pack_bg_selector")那样更改其状态。

问题

如何将FrameLayout和TextView作为具有单个背景的可单击的统一区域,以改变其按下/未按下状态?

最佳答案

能否请您将android:clickable="true"添加到外部linearlayout中。
如果不起作用,您也可以尝试再次将android:descendantFocusability="beforeDescendants"添加到外部布局。
祝你好运

关于android - LinearLayout onClick可以工作,但是状态不会改变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29642984/

10-12 04:23