[英]onClickListener on a LinearLayout
我想实现的功能有点问题。
我有一个LinearLayout
,包含 2 TextViews
。 我想在它上面设置一个onClickListener
,以便它的行为就像ListView
一个项目。
我已经尝试了一些可能的实现,并使用LinearLayout
的 xml 属性android:onClick
让它工作。
由于我希望应用程序对LinearLayout
上的单击做出直观反应(如在ListView
),因此我将其放在侦听器回调方法中:
l.setBackgroundColor(android.R.drawable.list_selector_background);
l 是一个LinearLayout
对象,用findViewById()
初始化;
每当我尝试单击布局时,应用程序都没有响应。 我试图通过 Toast 消息显示替换回调方法中的代码,并且它有效,所以我猜问题出在setBackgroundColor
。
有没有人熟悉这个?
PS:抱歉,我现在不能发布更多代码,我正在工作。
您必须在 xml 布局文件中设置LinearLayout
属性android:clickable="true"
或在 java 活动代码中setClickable(true)
。
我注意到,只要 LinearLayout 中的任何子元素具有 android:textIsSelectable="true" 属性,上面的所有建议都没有帮助。
我发现 setClickable(true) 仍然会导致点击转到线性布局的子项。 我发现要让 LinearLayout 捕获触摸而不是它的子类,我必须覆盖 dispatchTouchEvent 方法,因此我为此创建了 LinearLayout 的子类。 虽然看起来像一个丑陋的解决方案。
你应该将LinearLayout的focusable设置为true,将所有子视图的focusable设置为false,不要使用android:clickable="true",但是你看不到linelayout的点击效果。 顺便说一句,最好的方法是实现 onTouchEvent api。
android:clickable="true" 在一种条件下完美运行。 您必须将 LilnearLayout 中的孩子放入 android:clickable="false"。
有同样的问题,我已经尝试了一个小时的所有答案,但没有一个奏效。
然后我意识到我只需要将我的 LinearLayout 提升到布局的底部,因为其他视图阻止了它,然后它就可以工作了,而无需向布局添加任何特殊属性。
把它放在这里以防有一天它可能对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.