为什么按钮点击事件在LinearLayout中不起作用?

时间:2013-10-24 11:15:22

标签: android

我有一种奇怪的感觉,我无法弄明白。使用下面的布局,我指定的按钮单击事件不起作用。点击按钮时没有任何反应。

(布局比这复杂一点,但我删除了无关的东西):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutOverview"
    android:paddingLeft="7dp"
    android:paddingRight="7dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/lblOverviewText"
        android:textStyle="bold"
        android:textSize="20sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />    
    <LinearLayout
        android:id="@+id/layoutSingleBlock"
        android:layout_below="@+id/lblOverviewText"
        android:layout_above="@+id/linearLayoutSetUnsetButtons"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">

        <!-- irrelevant stuff removed --> 

        <Button
            android:id="@+id/btnMyButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="MY BUTTON" />       
    </LinearLayout>
</RelativeLayout>

但是,如果我将按钮移到LinearLayout的上下文之外,例如下面,它有效。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutOverview"
    android:paddingLeft="7dp"
    android:paddingRight="7dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/lblOverviewText"
        android:textStyle="bold"
        android:textSize="20sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />    
    <Button
        android:id="@+id/btnMyButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="MY BUTTON" />                 
    <LinearLayout
        android:id="@+id/layoutSingleBlock"
        android:layout_below="@+id/lblOverviewText"
        android:layout_above="@+id/linearLayoutSetUnsetButtons"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">

        <!-- irrelevant stuff removed --> 

        <!-- button moved outside the LinearLayout --> 

    </LinearLayout>
</RelativeLayout>

这个阻止按钮点击事件的LinearLayout有什么用?

修改

根据要求,这是我在OnCreate中分配点击监听器的方式:( C#/ Mono for Android)

FindViewById<Button>(Resource.Id.btnMyButton).Click += (s, e) => AlertAlarmEvents();

请注意,这个确切的代码在LinearLayout的上下文之外工作,但不在内部,如问题中所述。

1 个答案:

答案 0 :(得分:0)

您忘记将android:clickable="true"添加到linearLayout,我认为您误认为了ID