今天我遇到了一个奇怪的布局问题,我还没有从谷歌那里找到任何有用的答案。
在我的布局上,我有一个左边是文本的按钮,右边有一个图标。我希望文本是20dp左边距到按钮的边框然后我将paddingLeft设置为按钮,但它不起作用。偶然的机会,我为按钮设置了背景颜色,填充就像魅力一样。任何人都可以帮我解释一下。
布局如下
<Buttonandroid:layout_width="fill_parent"
android:drawableRight="@drawable/right_arrow"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:layout_height="72dp"
android:text="Button"
android:id="@+id/btn"
android:gravity="center_vertical"
android:fontFamily="roboto regular"
android:textColor="#ffffff00"
style="@android:style/Widget.DeviceDefault.Button.Borderless" />
谢谢大家!
答案 0 :(得分:20)
设置minWidth和minHight似乎可以让填充和边距在有或没有背景的情况下正常工作。
<Button
android:minHeight="0dp"
android:minWidth="0dp" ...
至于为什么背景对填充的工作原理做了什么...我认为它与View.java中的这段代码有关
protected int getSuggestedMinimumWidth() {
return (mBackground == null) ? mMinWidth : max(mMinWidth, mBackground.getMinimumWidth());
}
protected int getSuggestedMinimumHeight() {
return (mBackground == null) ? mMinHeight : max(mMinHeight, mBackground.getMinimumHeight());
}
答案 1 :(得分:2)
你可以试试这个
您可以使用Textview,而不是使用Button,它可以像您想要的那样工作
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableRight="@drawable/right_arrow"
android:gravity="center_vertical"
android:text="Button"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textColor="#ffffff00" />
希望这适合你。
答案 2 :(得分:0)
添加此
android:drawablePadding="20dp"