新材料库:中心图标,位于按钮内的文本上方

时间:2019-02-03 09:13:51

标签: android xml material-design android-button

我有此按钮,我想将图标居中放置,但它也应位于文本上方。

enter image description here

问题是,有一个选项可以设置图标的重力,即app:iconGravity,但是它只有两个选项,而没有一个是居中的。 如果没有文本,请将选项设置为textStart可以将图标移到中心,但是我希望图标位于文本的中心并且也位于文本上方。

这是当前代码:

<com.google.android.material.button.MaterialButton
            android:id="@+id/payButton"
            style="@style/Widget.MaterialComponents.Button.Icon"
            android:layout_width="0dp"
            android:layout_height="96dp"
            android:layout_weight="1"
            android:fontFamily="@font/montserrat_regular"
            android:text="@string/pay"
            android:textColor="?attr/colorPrimary"
            app:backgroundTint="@android:color/white"
            app:icon="@drawable/ic_pay_black_24dp"
            app:iconGravity="textStart"
            app:iconSize="32dp"
            app:iconTint="@color/colorPrimary" />

2 个答案:

答案 0 :(得分:2)

似乎他们认为这不是一个好主意/设计,但他们的设计师同意在将来的版本中添加功能。

以下是有关他们的回购中有关此主题的请求/讨论: https://github.com/material-components/material-components-android/issues/671

现在,我发现的唯一可能性是:

  • 使用android:drawableTop代替可定制性差的app:icon:
  • 创建您自己的自定义视图或布局,并将其包含在您需要的地方

我刚刚提交了PR以添加此功能,因为他们似乎同意它应支持top重力。

答案 1 :(得分:-1)

MaterialButton视图不允许执行您想要的操作。您将使用自己的视图手动进行操作。