繁体   English   中英

LinearLayout 上的 onClickListener

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM