2014-01-07 79 views
-1

目前我有这个:front_card_display.setBackgroundResource(R.drawable.large_card_0);Android:如何在应用程序中设置按钮的按钮图像

但是,我希望large_card_“0”是灵活的,这意味着我希望它基于变量或需要时进行更改。它可能是1,2,3 ..等这样做的最好方法是什么。我也尝试创建一个r.string,但它似乎不起作用。提前致谢。

问候,

瑞安

+0

复制所有的绘制像MDPI,华电国际绘制文件夹的图像,xhdpi取决于分辨率,T会很容易。 – jagdish

回答

1

我相信你想则getIdentifier()。 Link

这是我知道的唯一方法,它运作得很好。

编辑:实例

for (int i = 1; i <= 118; i++) { 
     int id = getResources().getIdentifier("element" + i, "id", this.getPackageName()); 
     Button preview = (Button) findViewById(id); 
     //... 

    } 

下面是一些代码。在我的情况下,我有118个按钮,名为element1,element2,element3等。你可以看到我如何使用“我”作为变量遍历它们全部

+0

嗨Rahl_Pryde,你能给我一个关于如何使用这种方法的例子吗? – RyanCW

+0

我已经编辑了一个例子。希望能帮助到你。 –

+0

嗨Rahl_Pyrde,你的例子有很多帮助,但仍有一件事给我一个错误“this.getPackageName())”;它说getPackageName()是一个未定义的方法 – RyanCW

1

您将需要设置一个switch语句来设置drawableId。

private int getDrawableId(int yourVariableToSwitchOn) { 

     int drawableId; 
     switch(yourVariableToSwitchOn) { 
      case CASE_0: 
       drawableId = R.drawable.large_card_0; 
       break; 
      case CASE_1: 
       drawableId = R.drawable.large_card_1; 
       break; 
      case CASE_2: 
       drawableId = R.drawable.large_card_2; 
       break; 
      case CASE_3: 
       drawableId = R.drawable.large_card_3; 
       break; 
     } 
     return drawableId; 
    } 

然后简单地设置你的背景front_card_display.setBackgroundResource(getDrawableId(someVariableToControlResource));

+0

hi TyFlyGuy,为什么drawableId是一个int类型。感谢您的回应 – RyanCW

+0

R.drawable.large_card_0或您试图从drawable获取的任何资源都以int形式返回。我会稍微编辑一下。 – Anderman