我只是想用一個RelativeLayout來製作一個按鈕,所以我可以在裏面放置儘可能多的drawables或textfields,並且我希望所有的孩子都可以改變顏色或者可以繪製到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>
在提拉文件夾,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>
在提拉 - 華電國際文件夾,裏面是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保持默認狀態。 我試着爲TextView和ImageView設置屬性android:clickable =「true」,但只有按下的元素會改變它的狀態,而不是整個按鈕。
任何幫助來實現我的目標是歡迎的。
我試過了,但這不是我要找的,例如: 如果用戶按住按鈕,Click事件將不會被觸發,背景將正確地具有按下狀態的背景,但TextView和ImageView不會。 – XST 2012-03-30 18:07:25
然後只需setOnTouchListener而不是onClick來處理他們觸摸您的佈局時。 – Booger 2012-03-30 21:51:36