我有一个九补丁的图像,我在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);在设置新图像之前,但没有帮助.
为什么会这样?
@编辑
我做了:
_btnCurrent.setBackgroundResource(R.drawable.button_menu_off);在Activity.onCreate()期间.
然后在textview.onClick()中,我调用:
_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);
这将使高度增加一倍.再次单击再次,仅在第一次单击时不再更改大小.
解决方法:
这看起来像我填充的类似问题.在调用setBackgroundResource之后,填充似乎发生了变化,而不是使用我在styles.xml中配置的值.效果看起来就像大小已经改变一样,但实际上它是填充.
我的解决方法是在更改背景后调用按钮上的setPadding,例如:
button.setBackgroundResource(R.drawable.btn_add);
button.setPadding(10, 15, 10, 15);
它不是很好,但它的工作原理.
我希望这有帮助!