Android setBackgroundResource()/setBackgroundDrawable() 之后padding失效

今天碰到了这么一个奇葩问题,在调用Button的setBackgroundResource()方法之后,Button的高度和宽度被压缩了~原本还以为是被挤压造成的....

调试了一番,终于发现问题,在调用setBackgroundResource()/setBackgroundDrawable() 会导致控件的Padding属性失效,包括paddingLeft,paddingRight,paddingTop,paddingBottom...

解决办法:

先获取控件的padding属性,调用setBackgroundResource()/setBackgroundDrawable() 之后,重新设置进去~~

            int top = btnOrderPay.getPaddingTop();
            int left = btnOrderPay.getPaddingLeft();
            int right = btnBack.getPaddingRight();
            int bottom = btnOrderPay.getPaddingBottom();
            btnOrderPay.setBackgroundResource(R.drawable.btn_gray_shape);
            btnOrderPay.setPadding(left, top, right, bottom); // button改变背景之后padding参数会失效,重新设置padding

问题搞定~~

你可能感兴趣的:(Android开发)