Android 安卓通过单击按钮更改布局/屏幕的背景

Android 安卓通过单击按钮更改布局/屏幕的背景,android,layout,button,Android,Layout,Button,所以我有几个按钮,我希望应用程序屏幕的背景根据我单击的按钮而改变。因此,如果我点击一个写着“蓝色”的按钮,背景就会变成我在res文件夹中创建的指定图像。提前感谢。使用代码更改图像 public void onClick(View v) { if(v==ButtonName) ButtonName.setImageResource(R.drawable.ImageName); } 或者使用XML文件 <?xml version="1.0" encoding="utf-8"?> &

所以我有几个按钮,我希望应用程序屏幕的背景根据我单击的按钮而改变。因此,如果我点击一个写着“蓝色”的按钮,背景就会变成我在res文件夹中创建的指定图像。提前感谢。

使用代码更改图像

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 -->
即使您希望我的背景可绘制,这里也是:

android:background="@drawable/ImageName"

现在,您可以使用代码将它们组合起来以更改图像

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 -->
即使您希望我的背景可绘制,这里也是:

android:background="@drawable/ImageName"
现在,您可以在
onCreate()
方法中将它们组合起来,以获得您的
视图,如下所示:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}
并在所有按钮上设置
onClickListener
,如下所示:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}
并重写方法
onClick()
,如下所示:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}
在您的
onCreate()
方法中,按如下方式获取您的
视图:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}
并在所有按钮上设置
onClickListener
,如下所示:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}
并重写方法
onClick()
,如下所示:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);
btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);
@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);
}

他想改变屏幕的背景,而不是按钮的背景:)仔细看我的答案,伙计:)我回家后会试试,谢谢你的快速回答:)事实上,我刚刚在最后一次Pharmagraph上写下了准确的答案:
ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName))看你的答案,他想更改应用程序屏幕的背景,而不是单击的按钮的背景,所以你应该更改活动的父布局的背景,而不是按钮的背景:)他想更改屏幕的背景,而不是按钮:)仔细看我的答案,伙计:)我回家后会试试的,谢谢你的快速回复:)事实上,我刚刚在上一个Pharmagraph上写下了准确的答案:
ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName))看你的答案,他想改变应用程序屏幕的背景,而不是点击的按钮的背景,所以你应该改变活动的父布局的背景,而不是按钮的背景:)是我的答案是正确的,不是他lol,你被接受了答案是我的答案是正确的,不是他lol,你是世界上公认的回答者