2014-01-07 108 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