LinearLayout设置Selector,不用在设置其它属性就可以点击了。
<LinearLayout
android:background="@drawable/selector">而RelativeLayout则不行,需要这样才行:
<RelativeLayout
android:clickable="true"
android:background="@drawable/selector">
为什么会这样呢?
原来是我在Java代码监听了LinearLayout的点击事件,LinearLayout.setOnClickListener(),查看setOnClickListener()的源码:
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}可以知道,如果该控件没有点击,则会设置点击setClickable(true)也就等同于Xml的android:clickable="true"。
本文深入探讨了Android中LinearLayout和RelativeLayout在设置点击事件时的行为区别,特别关注了LinearLayout通过背景图片实现点击效果的方法,以及为何RelativeLayout需要额外设置可点击属性。文章详细解析了LinearLayout的onClick事件监听器源码,揭示了其内部如何处理点击事件,并提供了实际应用案例。
1353

被折叠的 条评论
为什么被折叠?



