我有一个有2个孩子的LinearLayout:一个ImageView左对齐,TextView右对齐。
我已将LinearLayout的背景设置为具有两个<item>
标记的@drawable XML资源。其中一人有android:state_pressed="true"
。此外,LinearLayout还有android:clickable="true"
。
单击LinearLayout时,它会正确地将其背景更改为android:state_pressed
样式,但单击其中一个子项不会将单击操作传播到LinearLayout。
单击子视图时,有没有办法在父视图上轻松实现点击状态?
答案 0 :(得分:2)
不要使用Both,因为它会产生异常
将此用于您的父母
android:addStatesFromChildren="true"
或添加您的子视图
`android:duplicateParentState="true"`
希望有所帮助
答案 1 :(得分:1)
考虑使用单个TextView
并使用android:drawableLeft
或android:drawableRight
属性来显示您的图片。它比具有两个孩子的LinearLayout
更好的设计和更高的性能。
如果这对您不起作用,请尝试将android:addStatesFromChildren="true"
添加到LinearLayout
。
答案 2 :(得分:1)
不确定它是否适用于您的具体实施,但这是一种非常简单的方法来实现这一目标&#34;复杂的&#34;按钮是通过制作普通按钮并使用android:drawableLeft
或android:drawableRight
或android:drawableTop
或android:drawableBottom
和android:drawablePaddig
在一个视图中获得相同的视觉效果。< / p>
例如:
<LinearLayout orientation=vertical>
<ImageView/>
<TextView/>
</LinearLayout>
与
几乎相同<Button
drawableLeft="@drawable/..."
text="..."
/>
这样你的整个布局就更简单了,按下的状态也可以开箱即用。