【发布时间】:2016-02-15 17:36:44
【问题描述】:
我有一个菜单弹出活动,其中包含一些要单击的菜单点。一个菜单项具有这种模式:
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);
}
});
【问题讨论】:
-
你试过LinearLayout viewSortAsccending = (LinearLayout) findViewById(R.id.item_sort_abc_asc);并删除 ImageView 中的所有 android:clickable="true" android:focusable="false" android:focusableInTouchMode="false"
-
把所有相关代码放上去,有些问题可能出在“不太重要”的那几行。
-
您尝试设置
android:descendantFocusability ="beforeDescendants"吗?有了这个 ViewGroup (LinearLayout) 将在它的孩子之前获得焦点 -
@Chol 你是对的,这就是解决方案。将其发布为答案,以便我接受。
标签: android android-layout android-linearlayout onclicklistener