반응형

1. 색상 값을 바꾸는 tint에서 하위 버전에서 적용이 안되는 문제가 발생했다.


2. tint 대신 setColorFilter() 메소드를 사용하면 된다.


3. 


/**

  * 선택된 라디오 버튼의 DrawableTop 아이콘 색상을 바꾼다.

  * @author 임성진

  * @since  오후 11:54

  **/

  private void changeRadioButtonColor(RadioGroup radioGroup){


    try {


      RadioButton radioButton = null;

      int childSize = radioGroup.getChildCount();

      int i = 0;

      Drawable[] background = null;

      int colorResourceId = radioGroup.getResources().getColor(R.color.any);


      for (i=0; i<childSize; i++) {


        radioButton = (RadioButton) radioGroup.getChildAt(i);

        background = radioButton.getCompoundDrawables();


        if (radioButton.isChecked()) {  // 체크가 되었다면


          // 색상을 바꾼다.

          /**

           * 각각의 배열 위치

           * left : 0

           * top : 1

           * right : 2

           * bottom : 4

           */

          background[1].setColorFilter(colorResourceId, PorterDuff.Mode.SRC_ATOP);


        } else {


          // 원래대로 색상을 바꾼다.

          background[1].setColorFilter(null);


        }


      }



    }catch (Exception ex) {


    }


  }


반응형