我正在尝试为具有多个元素的RelativeLayout设置onClickListener。我已将侦听器放在RelativeLayout上,但如果单击任何子元素的顶部,只有单击它们时才会注册。我尝试了几种不同的方法将孩子设置为可点击=" true"或者所有焦点="假"但似乎不能让整个布局像一个按钮。这是可能的还是我需要clickListeners为每个孩子做同样的事情?
<RelativeLayout
android:id="@+id/nearbyLikeGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1">
<ImageView
android:id="@+id/nearbyLikeIconImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:focusable="false"
android:contentDescription="@string/content_description"
android:src="@drawable/like_icon"/>
<Button
android:id="@+id/nearbyFeedsLikeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_toRightOf="@+id/nearbyLikeIconImageView"
android:focusable="false"
android:paddingBottom="15dp"
android:paddingTop="15dp"
android:text="@string/like"
android:textColor="@color/white"
android:textSize="12sp" />
</RelativeLayout>
适配器类:
RelativeLayout likeGroup = (RelativeLayout)v.findViewById(R.id.nearbyLikeGroup);
likeGroup.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d("test", "layout group clicked");
}
});
答案 0 :(得分:1)
要防止子视图使用点击事件,您需要在其上设置android:clickable="false"
。我假设只有Button
出现问题,因为ImageViews
默认情况下无法点击。
试试这个布局:
<RelativeLayout
android:id="@+id/nearbyLikeIconGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1">
<ImageView
android:id="@+id/nearbyLikeIconImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:focusable="false"
android:contentDescription="@string/content_description"
android:src="@drawable/like_icon"/>
<Button
android:id="@+id/nearbyFeedsLikeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_toRightOf="@+id/nearbyLikeIconImageView"
android:focusable="false"
android:clickable="false"
android:paddingBottom="15dp"
android:paddingTop="15dp"
android:text="@string/like"
android:textColor="@color/white"
android:textSize="12sp" />
</RelativeLayout>