Devu Soman Devu Soman - 1 month ago 16
Android Question

How to make a Relativelayout clickable?

I have a layout like this

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:addStatesFromChildren="true"
android:clickable="true"
android:duplicateParentState="true"
android:focusable="true"
android:paddingBottom="10dip" >

<ImageView
android:id="@+id/imagView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:focusable="false"
android:background="@drawable/imageView_bg"
android:focusableInTouchMode="false" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="18dip"
android:background="@drawable/button_bg"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="left|center_vertical"
android:paddingLeft="25dip"
android:textColor="#ffffff"
android:textSize="20dip" />

</RelativeLayout>


button_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/btn_normal"/>

</selector>


imageView_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/img_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/img_normal"/>

</selector>


The image view and button have pressed images.when the user clicks on the view ,wants to press both imageview and button(Showing pressed images).But it does not show pressed images. How to achieve this? Where is the problem?

Thanks in advance

Answer

I think it solves the problem

((RelativeLayout)findViewById(R.id.mainLayout)).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
    ViewGroup viewGroup = (ViewGroup) view;
     for (int i = 0; i < viewGroup .getChildCount(); i++) {

       View viewChild = viewGroup .getChildAt(i);
       viewChild.setPressed(true);

          }
    }
});
Comments