Я просто хочу сделать кнопку, используя RelativeLayout, чтобы у меня было столько рисованных или текстовых полей внутри, и я хочу, чтобы все дочерние элементы меняли цвет или рисовали соответственно в состояние RelativeLayout.Если я нажимаю пользовательскую кнопку, она должна иметь правильные цвета и рисунки.
Вот некоторый код (только один TextView и ImageView для примера):
В main.xml родительский макет представляет собой LinearLayout, вот пользовательская кнопка:
<RelativeLayout
android:id="@+id/relativelayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginTop="25dp"
android:background="@drawable/background_state"
android:clickable="true"
android:focusable="true" >
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="8dip"
android:clickable="true"
android:text="Awesome text"
android:textColor="@color/textview_state"
android:textSize="20sp" />
<ImageView
android:id="@+id/imageview"
android:layout_width="51dip"
android:layout_height="51dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dip"
android:clickable="true"
android:src="@drawable/imageview_state" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_alignParentTop="true"
android:background="#FFFFFF"
android:clickable="false"
android:focusable="false" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_alignParentTop="true"
android:layout_marginTop="50dip"
android:background="#D3E992"
android:clickable="false"
android:focusable="false" />
</RelativeLayout>
В папке drawable, imageview_state.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/imageview_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/imageview" />
</selector>
В папке drawable-hdpi находятся imageview.png и imageview_pressed.png.
В папке цвета, background_state.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="#E0EBCC"/>
<item android:drawable="#669900"/>
</selector>
В папке с цветом textview_state.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#000"/>
<item android:color="#FFF"/>
</selector>
Пока, когда я нажимаю на RelativeLayout, фон RelativeLayout изменяется правильно, ноImageView и TextView остаются в состоянии по умолчанию.Я попытался установить свойство android: clickable = "true" для TextView и ImageView, но только состояние нажатого элемента изменяет его, а не вся кнопка.
Любая помощь для достижения моей цели приветствуется:)