【问题标题】:Android round button with icon带有图标的 Android 圆形按钮
【发布时间】:2017-09-11 14:40:18
【问题描述】:

我正在尝试制作这样的按钮 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" />

【问题讨论】:

    标签: android android-layout android-fragments android-button


    【解决方案1】:

    从您的 buttonXml 中删除大小和填充以减小您的半径

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

    【讨论】:

    • button 和 textview 都是可行的,我想你必须在你设置 startDrawable 的按钮中提供 drawablePadding
    【解决方案2】:

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

    Button 的代码现在如下所示:

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

    【讨论】:

      【解决方案3】:

      圆角按钮+图标+文字

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

      这项工作对我来说不需要太多的定制

      【讨论】:

        【解决方案4】:

        您可以使用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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-01
          • 2011-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-27
          • 1970-01-01
          相关资源
          最近更新 更多