2014-08-29 151 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