具有多个元素的Android RelativeLayout设置了ClickListener

时间:2014-04-25 18:12:14

标签: android

我正在尝试为具有多个元素的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");                  
    }
});

1 个答案:

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