4

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

_btnCurrent.setBackgroundResource(R.drawable.button_menu_off);

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

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);

如果我再次调用它(在文本视图中再次单击),则没有效果。这很好,我想它也会发生在第一次点击时。所以:

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); 在设置新图像之前,但没有帮助。

为什么会这样?

@编辑

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

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

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);

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

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

6

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

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

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

这不是很好,但它有效。

我希望这有帮助!

于 2013-04-07T12:01:25.607 回答