Android - 基于变量设置背景

时间:2014-10-24 22:49:11

标签: android button

我想根据变量设置按钮的背景。该视图无法应用于 int,但我该如何解决这个问题?

String picture = db.getName(); Button cal = (Button)findViewById(R.id.cal); int resID = getResources().getIdentifier(picture, "drawable", this.getPackageName()); cal.setBackgroundDrawable(resID);

2 个答案:

答案 0 :(得分:0)

您只需使用条件测试来测试您正在使用的变量的值。

我从代码片段中假定控制应用哪个背景的变量是String picture = db.getName();行。所以你会接受那个变量并对它进行测试。

像这样:

String picture = db.getName();
Button cal = (Button)findViewById(R.id.cal);
Drawable resId;

if(picture.equals("tree") {
    resId = R.drawable.tree_image;
} else if(picture.equals("light") {
    resId = R.drawable.light_image;
}

cal.setBackgroundDrawable(resId);

但是,您也可以将可绘制文件夹中的图像命名为与db.getName()相同的图像。然后使用您的代码,您可以获得drawable。 注意您需要获取可绘制的ID而不是ID 我看到您获得的int id值在方法setBackgroundDrawable()

中是不可接受的

要使用您的方法,您只需执行此操作:

String picture = db.getName();
Button cal = (Button)findViewById(R.id.cal);
int resID = getResources().getIdentifier(picture, "drawable",  this.getPackageName()); // This will return an integer value stating the id for the image you want.

Drawable drawablePic = getResources().getDrawable(resID); //This will get you the image in the form of a drawable to be set in the method below.
cal.setBackgroundDrawable(drawablePic); //Now we set the drawable image to the view.

您可以使用任何一种方法。第二个全部取决于您如何在可绘制文件夹中命名图像。

答案 1 :(得分:0)

call switch method in where your variable change 


 switch (YourVariable) {
            case 1: 
             // set your code to determine which button background should be here 
                     break;
            case 2: 
            // set your code to determine which button background should be here 
                     break;
            case 3: 
          // set your code to determine which button background should be here 
                     break;

            default:
          // make your default code here  
                         break;