我有LinearLayout
,我想回复用户对LinearLayout
的点击。所以我写道:
<LinearLayout
Some Attributes
onClick="layoutOnClick">
</LinearLayout>
但是,如果我点击LinerLayout
上的观看次数,则layoutOnClick
方法无法调用。这意味着我需要为LinearLayout
中的每个视图添加相同的onClick属性。还有更好的方法吗?
答案 0 :(得分:1)
将clickable
属性添加到LinearLayout
,并将其设置为true
。
修改强>
如果这不起作用,答案会更复杂。您可以创建一个展开ViewGroup
的自定义LinearLayout
,并覆盖onInterceptTouchEvent()
和onTouchEvent()
。在true
中返回onInterceptTouchEvent()
,然后将点击的逻辑添加到onTouchEvent()
。
These Android Developer文档会详细介绍。
答案 1 :(得分:0)
当您在布局中设计视图时,布局将完全占用视图[buttons / edittext等]。因此,您无法准确地单击布局。最好为每个视图或单个视图添加侦听器。否则,如果您能够准确地单击布局,那么显然它应该可以工作。
答案 2 :(得分:-1)
是的,您当然可以向单个LinearLayout元素添加事件侦听器。
为线性布局提供id属性
<LinearLayout
android:id="@+id/llSendMoney"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
在这样的代码中引用它,
private LinearLayout llSendMoney;
this.llSendMoney = (LinearLayout) findViewById(R.id.llSendMoney);
this.llSendMoney.setOnClickListener(this);
并在onclick事件中
@Override
public void onClick(View v)
{
if(v.getId()== R.id.llSendMoney) {
//do whatever you want here in the onclick event
}
}
我的意思是,如果你不能更准确地点击视图那么你可能会考虑改变你的用户体验。或者你可能试图解决一个问题,这个问题有更明确的解决方案,比如在linearlayout中使用片段。顺便说一句,我很好奇看到你的布局文件,以便更清楚地了解你的目标。