раскладку имеет следующую структуру:LinearLayout OnClick работает, но состояние не меняется
<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>
постановка задачи
So в LinearLayout card_pack_clickable_area
имеет два элемента: FrameLayout card_pack_body_frame_layout
и TextView card_pack_percentage
.
То, что я пытаюсь достичь, состоит в том, чтобы FrameLayout и TextView были единым объектом для кликов, поэтому я их обернул в внешний LinearLayout.
В коде Java я положил onClickListener на этот LinearLayout. Фактически я получаю событие onClick, когда я нажимаю либо на FrameLayout, либо на TextView.
Проблема заключается в том, что LinearLayout не изменить свое состояние, так как оно должно осуществляться в соответствии с его фоном (@drawable/card_pack_bg_selector"
).
Вопрос
Как я могу иметь FrameLayout и TextView как единая активную область с одним фоном, который изменяет свое состояние нажимаются/нажат?
http://stackoverflow.com/a/42550267/5064278 – kaya