簡體   English   中英

在按鈕內設置可繪制位置

[英]Set drawable position inside button

我在文本左側有一個按鈕和一個可繪制對象,但我希望可繪制對象更接近文本。 所以我需要移動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" />

這是它現在的樣子:

在此處輸入圖片說明

這是我希望的樣子:

在此處輸入圖片說明

謝謝!

嘗試這個

 <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" />

MaterialButton使用app:iconGravity="textStart"屬性

    <com.google.android.material.button.MaterialButton
        app:icon="@drawable/ic_add_24px"
        app:iconGravity="textStart"
        ../>

在此處輸入圖片說明

如果您想減少圖標和文本之間的填充,只需使用app:iconPadding屬性:

    <com.google.android.material.button.MaterialButton
        app:icon="@drawable/ic_add_24px"
        app:iconGravity="textStart"
        app:iconPadding="0dp"/>

在此處輸入圖片說明

我通過簡單地將這些屬性專門放在按鈕上得到了這個結果

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

您可以調整自己的價值觀以獲得所需的結果。

干杯:-)

我只是使用 paddingLeft 和 paddingRight 做到了這一點。 其作品! ... android:paddingLeft="25dp" android:paddingRight="25dp" />

按鈕左邊框和圖標右邊框之間的內邊距由android:paddingLeft屬性控制。 圖標和文本之間的內邊距由android:drawablePadding屬性定義。

將這兩個屬性添加到您的按鈕並設置您滿意的值。

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

您可以通過添加 OnClickListener 將 LinearLayout 用作按鈕並根據需要進行自定義。

<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>

在閱讀了一段時間並使用 XML 進行了大量組合后,您還可能希望以編程方式擴展可繪制/圖標,但仍然無法正常工作,

您可能希望在庫下面分叉,以適合您的用例,例如以編程方式自定義視圖、位置等,請參閱以下參考:

  1. 與文本對齊的可繪制/圖標,請參閱此處的示例
  2. 類似於 facebook 登錄的按鈕,請在此處查看示例
  3. 對於 RadioButton,請在此處查看完整的要點代碼

PS:版權歸作者所有

對於 Materialbutton,您必須使用icon屬性,您還可以使用iconTint更改其色調,如下例所示:

<com.google.android.material.button.MaterialButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:icon="@drawable/ic_cancel"
    app:iconTint="@color/black"
    android:text="text" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM