0

我有一个具有 2 个子级的 LinearLayout:一个左对齐的 ImageView 和一个右对齐的 TextView。

我已将 LinearLayout 的背景设置为具有两个<item>标签的 @drawable XML 资源。其中之一有android:state_pressed="true"。此外,LinearLayout 有android:clickable="true".

单击 LinearLayout 时,它会正确地将其背景更改为android:state_pressed样式,但单击其中一个子项不会将单击操作传播到 LinearLayout。

当点击子视图时,有没有办法在父视图上轻松实现点击状态?

4

3 回答 3

2

Dont use Both as it will give Exception

Use this to your parent

android:addStatesFromChildren="true"

Or add in your child views

`android:duplicateParentState="true"` 

Hope it helps

于 2014-09-15T15:23:04.720 回答
1

不确定它是否适用于您的特定实现,但实现此“复杂”按钮的一种非常简单的方法是制作一个普通按钮并使用android:drawableLeftorandroid:drawableRightandroid:drawableToporandroid:drawableBottomandroid:drawablePaddig在一个视图中实现相同的视觉效果。

例如:

<LinearLayout orientation=vertical>
    <ImageView/>
    <TextView/>
</LinearLayout>

几乎一样

<Button
   drawableLeft="@drawable/..."
   text="..."
/>

这样你的整个布局就更简单了,并且按下的状态可以开箱即用。

于 2014-09-15T15:42:53.897 回答
1

考虑使用单个TextView并使用android:drawableLeftorandroid:drawableRight属性来显示您的图像。LinearLayout它比有两个孩子的设计更好,性能更高。

如果这对您不起作用,请尝试添加android:addStatesFromChildren="true"LinearLayout.

于 2014-09-15T15:20:23.353 回答