1. 程式人生 > >Android 根據觸控狀態切換背景,顏色,字型等狀態

Android 根據觸控狀態切換背景,顏色,字型等狀態

問題的來源:

       初學Android時,設計部給出的要求是當點選某一個大的控制元件(這個控制元件是個複雜的佈局,中間有很多圖示,文字之類的)會出現不同的效果。我們知道可以使用xml檔案來實現按鈕不同狀態下的變化。但是當多個佈局一起的時候就感覺不這樣用了,至少我當時是準備用程式碼去實現的,其實根本就沒有必要。最簡單有效的辦法:仍然是使用xml檔案來實現,給你每個需要變化的控制元件都配置上相應的xml檔案即可。

    下面上程式碼。

  <LinearLayout
        android:id="@+id/ll_group"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/select_lly_op_menu_bg"
        android:orientation="vertical" android:clickable = "true"
        >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textColor="@drawable/tab_menu_color"
        android:text="我是測試文字"

        android:gravity="center"

        />
    </LinearLayout>

drawable 中的 xml檔案。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_checked="true">
        <!-- 定義當button 處於pressed 狀態時的形態。 -->
		<shape>
           <!-- 實心 --> 
  		  <solid android:color="#16a6f9"/> 
        </shape>
        
     </item>
     <item android:state_pressed="true">
        <!-- 定義當button 處於pressed 狀態時的形態。 -->
		<shape>
           <!-- 實心 --> 
  		  <solid android:color="#16a6f9"/> 
        </shape>
        
     </item>
    <item android:state_focused="true">
        <!-- 定義當button獲得focus時的形態 -->
		<shape>
           <!-- 實心 --> 
  		  <solid android:color="#16a6f9"/> 
        </shape>
     </item>
    <item>
        <!-- 定義當button 處於普通 狀態時的形態。 -->
		<shape>
           <!-- 實心 --> 
  		  <solid android:color="#ffffff"/> 
        </shape>
     </item>

</selector>

第二個xml檔案
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_enabled="false"
  		  android:color="#ffffff"/> 
	<item android:state_pressed="true"
		  android:color="#ffffff"/>
	<item android:state_focused="true"
		  android:color="#ffffff"/>
	<item android:state_selected="true"
		  android:color="#ffffff"/>
	<item android:color="#16a6f9"/>

</selector>

如果只是上面的操作,你會發現沒有什麼效果、你需要給外層的linearLayout增加一個setOnClickable(true)的屬性。因為預設的不可點選,需要讓其能夠點選。  完成上面的步驟,除錯結果就是按壓的時候背景和子空間中的文字顏色同時都產生了變化。其它的複雜的搭配需要更多的嘗試。