目前我有类似的东西:
<LinearLayout android:layout_height="80dip" android:id="@+id/linearLayoutSettings"
android:layout_width="80dip" android:orientation="vertical">
<ImageButton android:layout_height="wrap_content" android:src="@android:drawable/ic_menu_manage"
android:id="@+id/imageButton1" android:layout_width="wrap_content"></ImageButton>
</LinearLayout>
LinearLayout附加了onClick侦听器。
问题:在LinearLayout中单击ImageButton时,事件不会被触发。
我可以通过在我附加到LinearLayout时点击这个按钮来附加它来解决它。但在这种情况下,它将意味着许多重复代码(有许多按钮)。
问题:有没有更有效的方法来解决这个问题?
答案 0 :(得分:2)
将ImageButton更改为ImageView,您将开始获取点击事件
答案 1 :(得分:1)
将以下标记附加到每个图像按钮:
android:onClick="yourOnClickFunction"
然后,在您的活动中,添加相应的功能:
public void yourOnClickFunction(final View v) {
switch(v.getId()) {
//Do whatever is necessary.
}
}
在开关块中,您需要了解按钮ID。您可以通过findViewById(R.id.aButton)获取它们。
答案 2 :(得分:0)
您可以在布局中编写循环查找所有按钮,并将创建的侦听器附加到所有按钮。
答案 3 :(得分:0)
如果我理解正确,单击该按钮时,LinearLayout的onClickListener
不会触发。这是有道理的。
你可以做的是放一个yourLinearLayout.performClick();
,它将以编程方式触发onClick事件的布局。如果你将它放在onClick按钮的末尾,那么它将按顺序执行按钮,然后是布局。
答案 4 :(得分:0)
你必须设置属性setClickable(true);
!!
您可以使用android:clickable="true"