Android中EditView使用setBackgroundDrawable或setBackgroundResource则xml中设置的Padding失效

  • 内容
  • 评论
  • 相关

Android中TextView、EditView、Button使用setBackgroundDrawable或setBackgroundResource则xml中设置的Padding失效。

我在xml布局中设置了TextView背景图片及Padding值,但是App中需要夜间/日间切换且不能使用recreate(),所以只能代码控制夜间/日间切换后的View的背景图片及字体颜色,但是效果非常令人不满意,在xml布局中设置的Padding值却失效了。初开始我还以为Padding值设置的小,后来发现不是这个原因。我尝试把代码中设置TextView的setBackgroundResource()方法注释掉,却正常了,那肯定是setBackgroundResource()方法造成的,所以代码里也要在设置背景图片后需要设置Padding值了。

解决方法:

1
2
3
4
5
6
7
8
9
10
11
TextView mTextView;
 
mTextView = ViewFinder(this, R.id.main_red_flag);
 
int _pL = mTextView.getPaddingLeft();
int _pT = mTextView.getPaddingTop();
int _pR = mTextView.getPaddingRight();
int _pB = mTextView.getPaddingBottom();
 
mTextView.setBackgroundResource(R.drawable.comments_num_bg_night);
mTextView.setPadding(_pL, _pT, _pR, _pB);

这样就解决问题,希望能帮助看到的朋友。