Android:调用textview.setBackgroundResource两次更改textview大小

时间:2013-04-07 11:10:54

标签: android resize textview background-image

我有一张9张图片,我在activity.onCreate()期间为textview设置了背景。 Textview具有高度和宽度的WRAP_CONTENT布局。它是从代码而不是从XML创建的。

_btnCurrent.setBackgroundResource(R.drawable.button_menu_off);

这很好用。 我还有另一张9张图片,大小相同,唯一不同的是它的颜色。 现在如果我稍后用另一个图像调用setBackgroundResource,它将增加textview的高度,几乎加倍。另一个调用发生在textview.onClick()

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);

如果我再次调用它(在textview中再次单击),则无效。哪个好,我认为第一次点击也会发生这种情况。 所以:

Activity.onCreate()
{
    btnCurrent= new TextView(this);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    btnCurrent.setBackgroundResource(R.drawable.button_menu_hs_off);

    btnCurrent.setPadding(15, 5, 15, 5);
    btnCurrent.setGravity(Gravity.CENTER);

    btnCurrent.setText( GetString(id) );        
    btnCurrent.setOnClickListener(this);

}

onClick()
{
    _btnCurrent.setBackgroundResource(R.drawable.button_menu_on);
}


onCreate();  // -> called by Android during startup -> OK
....
onClick();   // called when user clicks on it -> btnCurrent has double height
....
onClick();   // called when user clicks again -> btnCurrent has same double height, no change in size
....
onClick();   // called when user clicks again -> btnCurrent has same double height, no change in size

我试图设置_btnHSCurrent.setBackgroundResource(0);在设置新图像之前,但没有帮助。

为什么会这样?

@Edit

我做了: _btnCurrent.setBackgroundResource(R.drawable.button_menu_off);在Activity.onCreate()期间。

然后在textview.onClick()中,我调用:

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);

这将使身高翻倍。再次单击再次,仅在第一次单击时不再更改大小。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:5)

这看起来像我在padding中遇到的类似问题。调用setBackgroundResource后,填充似乎发生了变化,而不是使用我在styles.xml中配置的值。效果看起来就像大小已经改变一样,但实际上它是填充。

我的解决方法是在更改背景后调用按钮上的setPadding,例如:

button.setBackgroundResource(R.drawable.btn_add);
button.setPadding(10, 15, 10, 15);

这不好但是有效。

我希望这有帮助!