Android 更改BackgroundDrawable后,按钮文本不再对齐

Android 更改BackgroundDrawable后,按钮文本不再对齐,android,android-layout,button,background-drawable,Android,Android Layout,Button,Background Drawable,我正在通过编程方式更改按钮的背景: myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue)); 更改背景后,按钮中的文本不再像更改背景前那样对齐 (来源:) 目标SDK版本为10。 谢谢。看起来setText()方法弄乱了对齐方式。更改文本后,重新应用重力和填充完成了以下工作: myButton.setGravity(Gravity.CENTER_HORIZONTAL | G

我正在通过编程方式更改按钮的背景:

myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue));
更改背景后,按钮中的文本不再像更改背景前那样对齐


(来源:)

目标SDK版本为10。 谢谢。

看起来setText()方法弄乱了对齐方式。更改文本后,重新应用重力和填充完成了以下工作:

myButton.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
myButton.setPadding(12, 12, 12, 12);

由于您使用的是9patch,因此需要使用底部和右侧线指定数据在图形中的位置,您可能没有在9patch图形的底部和右侧绘制完整的线

这就是为什么按钮内的文本不再居中,因为9patch的边界与您想象的不同

您的9patch(通常)应该只在右侧线的顶部和底部保留1个像素,在底部线的左侧和右侧保留1个像素

重新绘制9patch,删除重力和填充代码,看看是否有效

见下图


您是否正在使用9patch作为可拉延式支架?还是一个普通的PNG文件?我使用的是9patch PNG。只添加了两条额外的黑线(我只有上面和左边的线),但这并没有解决问题。按钮中的文本没有正确对齐。我不得不把重力和填充码放回原处,但仍然没有100%满意。这解决了按钮中文本的对齐问题,但按钮会被拉伸。我在表格布局中有12个按钮,但在更改BackgroundDrawable后,行中的按钮不是同样大。其中一些比其他的短。