2012-01-07 119 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