2012-01-07 213 views
1

所以我有幾個按鈕,我希望應用程序屏幕的背景根據點擊的按鈕而改變。所以如果我點擊一個寫有「藍色」的按鈕,背景會變成我在res文件夾中創建的指定圖像。提前致謝。Android;通過單擊按鈕更改佈局/屏幕的背景

+0

這是我的答案,這是正確的,不是他大聲笑,你接受了翁的回答男人 – Houcine 2012-01-10 15:55:11

回答

2

要通過使用代碼

public void onClick(View v) { 
if(v==ButtonName) 
ButtonName.setImageResource(R.drawable.ImageName); 
} 

,或者使用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="@drawable/login_selected" /> <!-- pressed --> 
<item android:state_focused="true" 
    android:drawable="@drawable/login_mouse_over" /> <!-- focused --> 
<item android:drawable="@drawable/login" /> <!-- default --> 
改變圖像

的OnClick只需添加以下代碼

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName)) 

即使你想我的背景繪製的,在這裏是:

android:background="@drawable/ImageName" 

現在,你可以複合他們

+0

他想改變屏幕的背景,而不是按鈕:) – Houcine 2012-01-07 15:03:52

+0

仔細看看我的答案老兄:) – El3ctr0n1c4 2012-01-07 15:05:17

+0

我當我回家時,我會嘗試它,謝謝你的迴應:) – user565460 2012-01-07 15:06:39

3

onCreate()方法讓你Views這樣的:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout); 
btnBlue = (Button) findViewById(R.id.btnBlue); 
btnRed = (Button) findViewById(R.id.btnRed); 
btnGreen = (Button) findViewById(R.id.btnGreen); 

,並設置onClickListener在這樣所有的按鈕:

btnRed.setOnClickListener(this); 
btnGreen.setOnClickListener(this); 
btnBlue.setOnClickListener(this); 

和覆蓋方法onClick()是這樣的:

@Override 
public void onClick(View v){ 
    Drawable background = null; 
    switch(v.getId()){ 
    case R.id.btnBlue :drawable = getResources().getDrawable(R.drawable.imageBlue); break; 
    case R.id.btnRed : drawable = getResources().getDrawable(R.drawable.imageRed); break; 
    case R.id.btnGreen : drawable = getResources().getDrawable(R.drawable.imageGreen); break; 
    } 
rootLayout.setBackgroundDrawable(background); 
} 
+0

偉大的作品。謝謝。 – user565460 2012-01-07 22:51:49

+0

如果有效,請接受答案:)。聽到那個消息很開心 – Houcine 2012-01-08 00:32:09