2015-08-27 114 views
-3

我做了一個圖像按鈕,當我點擊圖像按鈕時,我需要改變圖像。實際上,它改變背景圖像,但只有幾秒鐘。爲什麼?如何改變點擊圖像按鈕上的圖像?

這裏是我的代碼

<ImageButton android:id="@+id/favorite" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:src="@drawable/start" 
     android:background="#00ffffff" 
     /> 

<?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/on" /> <!-- pressed --> 

    <item android:drawable="@drawable/off" /> <!-- default --> 
</selector> 

我需要顯示圖像時,我點擊圖片按鈕..?我可以寫在Java端?我可以在圖像按鈕的點擊監聽器上編寫嗎?

+0

您已經定義了一個選擇,並且正在改變'機器人形象:state_pressed =「真」'。這就是圖像在幾秒鐘內變化的原因。 是的,您可以更改按鈕點擊偵聽器上的圖像。 讓我知道需求或重新構建您的問題? –

+0

我需要改變圖像點擊image..same的東西,我需要當用戶按圖像按鈕..實際上圖像是幾秒鐘的變化。但我需要永久 – user944513

+0

我想@Marta已經幫你。涼。 –

回答

1

這就是您爲按鈕背景使用選擇器並根據按鈕狀態改變圖像的原因。如果它被按下,圖像將「開啓」並處於正常狀態(不按下並且不聚焦),圖像將被「關閉」。

編輯:

public class MainActivity extends AppCompatActivity { 

ImageButton btn; 
boolean isPressed; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn = (ImageButton) findViewById(R.id.btn); 
    btn.setBackgroundResource(R.drawable.normal); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isPressed){ 
       v.setBackgroundResource(R.drawable.normal); 
      }else{ 
       v.setBackgroundResource(R.drawable.pressed); 
      } 
      isPressed = !isPressed; // reverse 
     } 
    }); 


} 


    <ImageButton 
    android:id="@+id/btn" 
    android:text="@string/hello_world" android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
+0

tenis但它顯示只爲第二次不是永久性當我點擊圖像 – user944513

+0

我會解釋更多,當我打開應用程序它炫耀圖像..當我點擊它在圖像上顯示1秒我需要點擊圖像後永久顯示 – user944513

+0

因爲android:state_pressed =「true」會在按下按鈕時(用手指點擊按鈕時)設置drawable(on)。當你重置時,按鈕不被按下,並且

0

實際上,它改變的背景圖像,但只有幾秒鐘。爲什麼?

我認爲這很明顯,那些可繪製的項目是爲用戶按下或在正常模式下按下ImageButton的狀態。

我可以在java端寫嗎?我可以在圖像按鈕的點擊監聽器上編寫嗎?

是的,是的再次:d如果要在用戶按下它去改變它,就去做這樣的:

XML佈局:

<ImageButton android:id="@+id/favorite" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/off" android:background="#00ffffff" />

Java端(如在你的創建方法中)

​​
0

通過提供一個絕對路徑或者一個絕對路徑來改變圖像的來源動態地在圖像的onClickListener中動態創建互聯網網址。

image.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Here before changing the image you can check if the appropriate         //image is set to the view. 
       image.setImageResource(R.drawable.on); 

     } 
}); 

,也可以是這樣的

btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isPressed){ 
       v.setBackgroundResource(R.drawable.normal); 
      }else{ 
       v.setBackgroundResource(R.drawable.pressed); 
      } 
      isPressed = !isPressed; // reverse 
     } 
    });