LZ-Says:enmmm,希望所有的一切都将会有一个好的结果。虽然菜比一个,但是只要努力了,就会有好的结果~!!!

前言
Enmmm,今天突然奇想,玩玩 shape 文件。
Enmmm,我想的挺美好的。
结果,mmp了。
先放上一波效果图:

各位看官请看右侧,MMP,我就是写个 shape 文件,怎么边距这么大呢?
Enmmm,下面一起跟随贺仔瞧瞧今天的坑坑吧~
Enmmm,难受
一开始,LZ 在想,会不会是内外边距导致的呢?
风风火火,设置内外边距均为 0,美美的点击运行,心想,MMP,坑我,揍你,哇咔咔。
结果一出来,只听啪啪俩声脆响,MMP,没效果。
Enmmm,我 。。。
看看源码吧。希望能找到问题根源。
本文基于 Android API 27。
首先查看 Button 源码:
public class Button extends TextView {
public Button(Context context) {
this(context, null);
}
public Button(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.buttonStyle);
}
public Button(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
public Button(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setClassName(Button.class.getName());
}
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(Button.class.getName());
}
}
这边发现了一个默认 Style,如下:
com.android.internal.R.attr.buttonStyle
会不会是这个 Style 设置了什么鬼呢?
可能设置什么呢?猜一波~
Enmmm,设置内外边距都无效,会不会是最小高度 / 宽度?
Enmmm,试试吧。
Enmmm,搜了老半天,不负众望啊,请看:
继续深入,查看根究:
以上内容则是针对 Button 不同的状态设置的不同 Style。
而下面,则是 Button 默认的 Selector 样式文件,里面包含着一些事件触发时的一些状态值,很详细,很 nice,以后可以根据这个来仿造我们的 Button 不同情况下的不同样式。
android:drawable="@drawable/btn_default_normal" />
android:drawable="@drawable/btn_default_normal_disable" />
android:drawable="@drawable/btn_default_pressed" />
android:drawable="@drawable/btn_default_selected" />
android:drawable="@drawable/btn_default_normal" />
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item
android:drawable="@drawable/btn_default_normal_disable" />
找了半天,没找到,突然想到,会不会在主题中设置了呢?
带着疑问,在万能的 Android Studio 中进行逐步查找,果不其然,如下:
mmp呦~!!!
而主题中,也是将 Button 按钮的默认字体大小设置为 14 sp,且开启英文转大写。
enmmm,本实例中使用的主题为:Theme.AppCompat.NoActionBar
Enmmm,无奈了。
收获与反思
不瞒各位老铁,关于查看这个源码,一开始走进了一个误区,也就是上面走到了 @style/Widget.Button 却发现怎么都走不下去了。
其实很多时候,换个角度,换个思维,一切也变得没有那么蛋疼了。
卡了我整整 3 天呐~!!!
如果有其他问题,可继续沟通~~~
LZ 也是小白一枚~~~
个人公众号
不定期发布博文,欢迎各位看官观看~

参考资料
- http://androidxref.com;
- https://android.googlesource.com。