如何在运行时设置属性“android:drawableTop”

如何在运行时设置属性“ android:drawableTop

使用

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

设置Drawable(如果有的话)显示在文本的左侧,上方,右侧和下方。 使用0,如果你不想在那里绘制。 Drawables的边界将被设置为它们的内在边界。

如果你使用

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

设置Drawable(如果有的话)显示在文本的左侧,上方,右侧和下方。 如果你不想要Drawable那么使用null。 Drawable必须已经有了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); 

我使用这个代码在左边使用“Theme.Holo”button和一个“自定义图像”,并用各种方式调用函数来改变它(图像)。

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