安卓圆形带图标的按钮

8
我正在尝试制作一个像这样的按钮Button Image,但我无法将图标放在文本前面。我现在制作的按钮看起来像这样button image now。因此,主要问题是如何使图标靠近文本前面?
这是我的按钮形状代码:
    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="50dp"
        />
    <solid
        android:color="#00A651"
        />
    <padding
        android:left="0dp"
        android:top="0dp"
        android:right="0dp"
        android:bottom="0dp"
        />
    <size
        android:width="300dp"
        android:height="20dp"
        />
</shape>

这是我用来在活动中实现按钮的代码:

<Button
        android:id="@+id/problem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/buttonshape"
        android:drawableStart="@drawable/ic_rate_review_black_24dp"
        android:textColor="#FFFFFF"
        android:textSize="15sp"
        android:text="@string/button_problem" />
4个回答

11

一切都按照Muhib Pirani建议的进行了。感谢他。

按钮的代码现在看起来像这样:

<Button
    android:id="@+id/problem"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/buttonshape"
    android:drawableStart="@drawable/ic_rate_review_black_24dp" 
    android:drawablePadding="5dp"
    android:paddingLeft="40dp"
    android:paddingRight="40dp"
    android:text="@string/button_problem"
    android:textColor="#FFFFFF"
    android:textSize="15sp" />

ButtonShape.xml的外观如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="50dp"/>
    <solid
        android:color="#00A651"
        /> </shape>

8

去除按钮XML中的大小和填充,减小圆角半径。

并给你的按键添加paddingTop和paddinBottom属性, 或者你也可以使用TextView作为按钮,因为它已经有一些预设的填充值了。

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
    android:radius="10dp"
    />
<solid
    android:color="#00A651"
    />


</shape>

按钮和文本视图都是可行的,我猜你需要在设置起始绘制时,在你的按钮中提供drawablePadding。 - Muhib Pirani

5
您可以使用MaterialButton
 <MaterialButton
     style="@style/Widget.MaterialComponents.Button.IconOnly"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     .../>

使用:

<style name="Widget.MaterialComponents.Button.IconOnly">
    <item name="iconPadding">0dp</item>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
    <item name="android:paddingLeft">12dp</item>
    <item name="android:paddingRight">12dp</item>
    <item name="android:minWidth">12dp</item>
    <item name="android:minHeight">12dp</item>
    <item name="iconGravity">textStart</item>
</style>

enter image description here


-1
style="@style/Base.Widget.AppCompat.Button.Borderless"

这对我来说很有效,不需要太多定制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接