有没有更好的方法为整个布局设置onClickListner?

时间:2015-08-01 08:27:42

标签: java android onclicklistener

我有LinearLayout,我想回复用户对LinearLayout的点击。所以我写道:

<LinearLayout
    Some Attributes
    onClick="layoutOnClick">

</LinearLayout>

但是,如果我点击LinerLayout上的观看次数,则layoutOnClick方法无法调用。这意味着我需要为LinearLayout中的每个视图添加相同的onClick属性。还有更好的方法吗?

3 个答案:

答案 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中使用片段。顺便说一句,我很好奇看到你的布局文件,以便更清楚地了解你的目标。