2012-11-01 316 views
0

在Android中,無論何時點擊按鈕(即ImageButton),我都想通過更改按鈕的顏色(可能會反轉顏色或變暗等)來給用戶提供反饋。在這一點上,我不想改變一個新的按鈕或任何東西,只是想改變狀態,以反映點擊。更改按鈕狀態OnClick

我意識到我可以添加一個新的drawable,所以每個按鈕將有2個狀態(點擊時,我會改變到第二個狀態)。

即(僞):

的onClick {

ImageButton.setDrawable(R.drawable.myclickedbutton) 

}

是否有更好的方法來做到這一點(我相信,iOS將與ImageColors你玩當你點擊的時候,這就是我在Android中想要的),或者是我認爲唯一的可能性?

我覺得我錯過了這個概念的專業。

在此先感謝。

編輯:如果它有所作爲,我的應用運行在最低目標2.2上。

編輯2:爲了澄清,我與圖像按鈕已經有一個自定義繪製資源工作。這就是我想操縱onClick。

編輯3:我覺得我在這裏不夠清楚。我知道如何使用兩個可繪製項(無論是onTouch,XML,onClick等)來更改狀態。我問是否有某種方式可以使Android(或某種方法)自動反轉或變暗所有按鈕的顏色點擊(與iOS相同,我相信)。我不問如何在按鈕到按鈕的基礎上做到這一點。這可以通過每個按鈕2個drawable來實現,我意識到這一點。

回答

2

button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="5dp"/> 
      <solid android:color="#f00"/> 
      <padding android:left="10.0dip" android:top="10.0dip" 
       android:right="10.0dip" android:bottom="10.0dip"/> 
      <stroke android:width="1.0dip" android:color="#222"/> 
     </shape> 
    </item> 
    <item android:state_pressed="false"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="5dp"/> 
      <solid android:color="#f1f1f1"/> 
      <padding android:left="10.0dip" android:top="10.0dip" 
       android:right="10.0dip" android:bottom="10.0dip"/> 
      <stroke android:width="1.0dip" android:color="#222"/> 
     </shape> 
    </item> 
</selector> 

應用此按鈕背景

<Button 
    android:background="@drawable/button"/> 

,並在類文件做這樣的

public void onClick(View v) { 

    pressedButton.setPressed(true); 
} 

,使紅色會穩定

+0

我不確定這是否是我想要的 - 我不希望按鈕具有單一顏色(點擊時更改)。這是一個ImageButton,它應該在點擊時進行更改。它已經有一個自定義的可繪製源,我想通過點擊來反轉,變暗等顏色來反映這個動作。 – Kgrover

0

您不必使用您提到的代碼來切換drawable。 而是創建一個具有兩種不同狀態的drawable。

正如你所說,你已經有自定義繪圖,你可以使用它們爲不同的狀態。

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

    <item android:state_pressed="true" 
    android:drawable="@drawable/drawable1" /> <!-- for clicked state-->   
<item android:drawable="@drawable/drawable2" /> <!-- for normal state--> 
</selector> 

將此xml設置爲drawable_1。在XML文件夾繪製並在代碼中使用這個繪製,

yourButton.setDrawable(R.drawable.drawable_1) 
+0

我知道這種方法,只是想知道是否有一個解決方案,每個button_使用_2 drawables。截至目前,不要猜測。 – Kgrover

0

可以使用onTouchListener的按鈕,根據按鈕單擊更改按鈕的狀態..

   button.setOnTouchListener(new OnTouchListener() { 

        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
        if(event.getAction()==MotionEvent.ACTION_DOWN) 
        { 
        // here u can change the button color or image as clickable as 
        button.setBackgroundImage(R.drawable.image_pressed); 

        } 
        if(event.getAction()==MotionEvent.ACTION_UP) 
        { 
        // here u can change the button color or image as released as 
        button.setBackgroundImage(R.drawable.image_released); 
        } 
         return false; 
        } 
       }); 

我覺得可能有幫助的你..