2014-08-29 99 views
2

我有一个按钮上的文字左侧的绘制,但我希望绘制更接近的文本。所以我需要移动drawable。设置可绘制位置内按钮

我定义的android:drawableLeft但按钮的内容不居中。

这里是我的代码:

<Button 
    android:id="@+id/addsubject" 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:drawableLeft="@drawable/ic_action_add" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="20dp" 
    android:text="@string/addsubject" 
    android:textColor="@color/white" 
    android:background="@drawable/custombutton1" /> 

这是现在的样子:

enter image description here

这里是我怎么想它是:

enter image description here

谢谢!

+0

尝试添加'安卓重力= “中心”'你的XML? – suitianshi 2014-08-29 09:03:24

+0

见https://stackoverflow.com/questions/3634191/how-to-center-icon-and-text-in-a-android-button-with-width-set-to-fill-parent/。 – CoolMind 2018-02-28 09:30:04

回答

5

试试这个

<Button 
    android:id="@+id/addsubject" 
    android:layout_width="160dip" 
    android:layout_height="60dip" 
    android:layout_gravity="center" 
    android:drawableLeft="@drawable/ic_action_add" 
    android:drawablePadding="2dip" 
    android:gravity="center" 
    android:paddingLeft="30dip" 
    android:paddingRight="26dip" 
    android:singleLine="true" 
    android:text="@string/addsubject" 
    android:textSize="13dip" /> 
+0

这就是我一直在寻找的!诀窍是使用drawableLeft和drawableRight并调整它们以适合。谢谢! – 2014-08-29 09:16:11

1

按钮的左边框由android:paddingLeft属性控制图标的右边框之间的衬垫。图标和文本之间的填充由android:drawablePadding属性定义。

这两个属性添加到您按钮并设置你是幸福的价值观。

<Button 
    ... 
    android:paddingLeft="24dp" 
    android:drawablePadding="8dp" 
    /> 
2

您可以使用LinearLayout作为按钮,方法是添加OnClickListener并根据需要进行自定义。

<LinearLayout   
    android:layout_width="160dip" 
    android:layout_height="60dip" 
    android:orientation="horizontal" 
    android:background="@drawable/custombutton1"> 

    <ImageView android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:src="@drawable/ic_action_add" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:scaleType="center"> 

    </ImageView> 

    <TextView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/addsubject" 
       android:layout_gravity="center" 
       android:layout_weight="1"/> 

</LinearLayout> 
1

我简单地把这些属性按钮专门

<Button 
    ... 
    android:paddingLeft="60dp" 
    android:drawablePadding="-50dp" 
    android:gravity="center" 
    android:drawableLeft="@drawable/your_button_icon" 
    /> 

您可以调整与自己的价值观为你想要的结果得到了这个结果。

干杯 :-)

+0

是的,这真的有效! – 2017-11-10 11:32:24

+0

谢谢,它的工作原理。但如果你有它,删除'android:padding'。在其他情况下,图标将左侧放置,文本将居中。结果也取决于按钮的宽度。 – CoolMind 2018-02-28 09:25:02

+0

解决方案很糟糕,因为按钮在不同的屏幕尺寸上看起来会有所不同。 – definera 2018-03-07 14:48:16