developer tip

런타임에 버튼의 "android : drawableTop"속성을 설정하는 방법

optionbox 2020. 12. 6. 21:29
반응형

런타임에 버튼의 "android : drawableTop"속성을 설정하는 방법


android:drawableTop런타임에 버튼의 속성 " " 을 설정하는 방법


사용하다

button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

Drawables (있는 경우)를 텍스트의 왼쪽, 위, 오른쪽 및 아래에 표시하도록 설정합니다. Drawable을 원하지 않으면 0을 사용하십시오. Drawables의 경계는 고유 경계로 설정됩니다.

사용하는 경우

button.setCompoundDrawables(left, top, right, bottom);

Drawables (있는 경우)를 텍스트의 왼쪽, 위, 오른쪽 및 아래에 표시하도록 설정합니다. Drawable을 원하지 않으면 null을 사용하십시오. Drawables에는 이미 setBounds (Rect)가 호출되어 있어야합니다 .


Drawable top = getResources().getDrawable(R.drawable.image);
button.setCompoundDrawablesWithIntrinsicBounds(null, top , null, null);

final Drawable drawableTop = getResources().getDrawable(R.drawable.btn_check_buttonless_on);

btnByCust.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {


 btnByCust.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop , null, null);

        }
    });

        Button button = (Button) findViewById(R.id.button);
        button.setCompoundDrawables(left, top, right, bottom);

이 코드를 사용하여 왼쪽에 "Custom image"가있는 "Theme.Holo"버튼을 사용하고 다양한 방식으로 호출되는 함수로 변경 (이미지)합니다.

protected void app_dibujarLogojuego() {
    if(bitmaplogojuego!=null){
        bitmaplogojuego.recycle();
        bitmaplogojuego=null;
    }
    Drawable LOGO = null;
    if(verjuego.equals("COSA1")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA1);  }
    if(verjuego.equals("COSA2")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA2);  }
    if(verjuego.equals("COSA3")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA3);  }
    if(verjuego.equals("COSA4")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA4);  }

    BUTTON_DECLARED_ID.setCompoundDrawablesWithIntrinsicBounds(LOGO, null , null, null);
}

 btn.setBackgroundResource(R.drawable.your_image_name_here);

Kotlin을 사용하는 경우 확장 방법을 사용하여 멋지게 보이게 할 수 있습니다.

fun TextView.setDrawableTop(iconId: Int) {
    val icon = this.context?.resources?.getDrawable(iconId)
    this.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null)
}

그런 다음 다음과 같이 사용할 수 있습니다.

// myTextView: TextView
myTextView.setDrawableTop(R.drawable.ic_happy)

이와 같은 확장 기능을 만들고 다음 drawable과 같이 설정 하십시오.

tvAccepted.setTopDrawable(R.drawable.ic_preparing_order_active)

fun TextView.setTopDrawable(icon: Int) {
    this.setCompoundDrawablesRelativeWithIntrinsicBounds(0,icon,0,0)
}

어디

setCompoundDrawablesRelativeWithIntrinsicBounds(left/start, top, right/end, bottom)

참고 URL : https://stackoverflow.com/questions/4919703/how-to-set-property-androiddrawabletop-of-a-button-at-runtime

반응형