drawableLeft/Right 等不适用于 Theme.MaterialComponents

Rom*_*ych 4 android android-button material-design material-components material-components-android

Theme.MaterialComponents....如果我想在Activity 中使用主题drawableLeft/Right等,那么它们不会显示。但是,如果我使用主题,Base.Theme.AppCompat它们会按预期工作。这是按钮:

       <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Test Button"
            android:drawableLeft="@drawable/ic_envelope"/>
Run Code Online (Sandbox Code Playgroud)

这就是主题的外观 Base.Theme.MaterialComponents 在此处输入图片说明

这是与 Base.Theme.AppCompat 在此处输入图片说明

如何drawableLeft使用Base.Theme.MaterialComponents主题进行工作?

Gab*_*tti 6

只需将 aMaterialButtonapp:icon属性一起使用:

<com.google.android.material.button.MaterialButton
      style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon"
      app:icon="@drawable/ic_add_24px"
      ../> 
Run Code Online (Sandbox Code Playgroud)

带有图标的轮廓按钮的屏幕截图

<com.google.android.material.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button.Icon"
    app:icon="@drawable/ic_add_24px"
    ../>
Run Code Online (Sandbox Code Playgroud)

带有图标的填充按钮的屏幕截图

<com.google.android.material.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button.TextButton.Icon"
    app:icon="@drawable/ic_add_24px"
    ../>
Run Code Online (Sandbox Code Playgroud)

带有图标的无边框按钮的屏幕截图

使用app:iconGravity配置start|end|textStart|textEnd

<com.google.android.material.button.MaterialButton
    app:iconGravity="end"
    ../>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明