我有一个菜单弹出活动,其中包含一些要点击的菜单点。一个菜单条目具有以下模式:
menu entry text [IMAGE]
如果用户单击文本,则单击侦听器可以正常工作。如果用户单击ImageView
,则尽管在周围的LinearLayout上设置了侦听器,但侦听器仍无法工作。
首先,我使用ImageButton
代替ImageView
。但是不会同时调用单击侦听器。我试图添加这些属性:
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false"
不起作用。
我尝试了onTouchListener
而不是onClickListener
,但也无效。任何想法如何使图像也可点击?以下是代码的重要部分:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen_menupopup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent_black"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/menu_item_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/item_sort_abc_asc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:orientation="horizontal" >
<TextView
android:id="@+id/sort_abc_asc"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/cookbook_sort_abc_asc"
android:textColor="@color/white" />
<ImageView
android:id="@+id/button_menu_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:src="@drawable/ic_configbutton_item" />
</LinearLayout>
....
活动代码:
View viewSortAsccending = findViewById(R.id.item_sort_abc_asc);
viewSortAsccending.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
Intent returnIntent = new Intent();
returnIntent.putExtra(RequestCode.SORT_ORDER_ALPHABETICAL_ASC.toString(), true);
setResult(RESULT_OK, returnIntent);
menuItemContainer.startAnimation(animationFadeOut);
}
});
答案 0 :(得分:0)
将您的Imageview的XML更改为:
<ImageView
android:id="@+id/button_menu_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:clickable="true"
android:onClick="imageview_button"
android:src="@drawable/ic_configbutton_item" />
然后将您的活动代码更改为:
public void imageview_button(View view) {
Intent returnIntent = new Intent();
returnIntent.putExtra(RequestCode.SORT_ORDER_ALPHABETICAL_ASC.toString(), true);
setResult(RESULT_OK, returnIntent);
menuItemContainer.startAnimation(animationFadeOut);
}
在这里工作正常! 希望这会有所帮助。
答案 1 :(得分:0)
您可以尝试:
LinearLayout viewSortAsccending = (LinearLayout) findViewById(R.id.item_sort_abc_asc);
并删除imageView中的所有以下参数:
android:clickable="true" android:focusable="false" android:focusableInTouchMode="false"
LinearLayout将按预期处理OnClick。 但实际上我不知道为什么如果你不将视图转换为LinearLayout,行为就不一样了?如果有人有答案,那么更新这篇文章会很好。