我有一个奇怪的东西,我无法弄清楚。使用下面的布局,我分配的按钮单击事件不起作用。当我点击按钮时没有任何反应。
(布局比这复杂一点,但我已经删除了不相关的东西):
<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 的上下文之外工作,而不是在内部,如问题中所述。