2014-01-07 1 views
-1

현재 내가 가지고있는 것 : front_card_display.setBackgroundResource (R.drawable.large_card_0);안드로이드 : 응용 프로그램에서 버튼의 버튼 이미지를 설정하는 방법

그러나 large_card_ "0"을 유연하게 지정하여 필요할 때 변수 또는 변경 사항을 기반으로하고 싶습니다. 1, 2, 3 등이 될 수 있습니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까? r.string을 만들려고했지만 작동하지 않는 것 같습니다. 미리 감사드립니다.

감사합니다,

라이언

+0

모두 복사 드로어 블 이미지를 설정, 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); 
     //... 

    } 

는 여기에 몇 가지 코드입니다. 필자의 경우, element1, element2, element3 등 118 개의 버튼이 있습니다. "i"를 변수를 통해 반복하는 방법을 볼 수 있습니다.

+0

안녕 Rahl_Pryde,이 방법을 사용하는 방법에 대한 예를 들어 주시겠습니까? – RyanCW

+0

예를 들어 편집했습니다. 희망이 도움이됩니다. –

+0

안녕하세요 Rahl_Pyrde, 당신의 예제가 많이 도움이되었지만 아직 "this.getPackageName())"오류가 발생하는 한 가지가 있습니다. getPackageName()이 정의되지 않은 메소드라고 가정합니다. – RyanCW

1

drawableId를 설정하는 switch 문을 설정해야합니다.

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; 
    } 

그런 다음 단순히 배경 MDPI, hdpi에 같은 당김 폴더에 front_card_display.setBackgroundResource(getDrawableId(someVariableToControlResource));

+0

안녕하세요 TyFlyGuy, 왜 drawableId int 유형입니다. 귀하의 응답을 보내 주셔서 감사합니다 – RyanCW

+0

R.drawable.large_card_0 또는 drawable에서 잡으려고하는 모든 리소스가 int로 반환됩니다. 나는 이것을 약간 편집 할 것이다. – Anderman

관련 문제