具有背景drawable的复杂“按钮”(带有子视图的LinearLayout) - 在子项单击时不反映“state_pressed”

时间:2014-09-15 15:13:14

标签: android childviews

我有一个有2个孩子的LinearLayout:一个ImageView左对齐,TextView右对齐。

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

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

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

3 个答案:

答案 0 :(得分:2)

不要使用Both,因为它会产生异常

将此用于您的父母

android:addStatesFromChildren="true"

或添加您的子视图

`android:duplicateParentState="true"` 

希望有所帮助

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

不确定它是否适用于您的具体实施,但这是一种非常简单的方法来实现这一目标&#34;复杂的&#34;按钮是通过制作普通按钮并使用android:drawableLeftandroid:drawableRightandroid:drawableTopandroid:drawableBottomandroid:drawablePaddig在一个视图中获得相同的视觉效果。< / p>

例如:

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

几乎相同
<Button
   drawableLeft="@drawable/..."
   text="..."
/>

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