包含ImageButton的LinearLayout(带有onClick) - 是否有更好的方法来解决它?

时间:2011-08-13 20:50:33

标签: android android-layout android-linearlayout

目前我有类似的东西:

<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时点击这个按钮来附加它来解决它。但在这种情况下,它将意味着许多重复代码(有许多按钮)。

问题:有没有更有效的方法来解决这个问题?

5 个答案:

答案 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"

在xml中访问它