Android中button是有默认的padding的,最近发现button中空间很大,但是文字发生了换行,debug发现button默认有padding。
直接上代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
int bottom = btn.getPaddingBottom();
int top = btn.getPaddingTop();
int left = btn.getPaddingLeft();
int right = btn.getPaddingRight();
Log.d(TAG, "bottom = " + bottom + ", top = " + top + ", left = " + left + ", right = " + right);
}
1、wrap_content且没有背景图
xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:textSize="12sp"
/>
</RelativeLayout>
输出:
12-23 23:38:58.674: D/button_test(1564): bottom = 12, top = 12, left = 18, right = 18
2、wrap_content并且设置背景图(.9图)
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn"
android:text="删除"
android:textSize="12sp" />
输出:
12-23 23:44:56.542: D/button_test(1905): bottom = 3, top = 4, left = 2, right = 2
3、wrap_content并且设置背景图(普通图)
xml:
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher"
android:text="删除"
android:textSize="12sp" />
输出:
12-23 23:47:34.538: D/button_test(2082): bottom = 0, top = 0, left = 0, right = 0
4、设置图片的宽高,不设置背景
xml:
<Button
android:id="@+id/btn"
android:layout_width="42dp"
android:layout_height="26dp"
android:text="删除"
android:textSize="12sp" />
输出:
12-23 23:50:45.102: D/button_test(2289): bottom = 12, top = 12, left = 18, right = 18
这时“删除”两个字折行了。
但其实“删除”两个字咋button中是可以放的下的,由于button有默认的padding,才将text折行了。
在xml中设置padding可以将“删除”显示在一行
xml:
<Button
android:id="@+id/btn"
android:layout_width="42dp"
android:layout_height="26dp"
android:text="删除"
android:textSize="12sp"
android:padding="0dp" />
总结:
系统会给button设置默认的padding,在需要居中或者需要一行显示的时候手动设置padding可以得到好的效果。当然padding也不是万能的如果字体确实过大也是要折行的。有兴趣可以自己试一试。