【问题标题】:drawable start not working with material button可绘制开始不适用于材质按钮
【发布时间】:2020-04-21 21:12:57
【问题描述】:

这是按钮:

    <Button
    android:id="@+id/btn_choose_photo"
    style="@style/Widget.MaterialComponents.Button.TextButton.Dialog"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableStart="@drawable/ic_camera"
    android:drawablePadding="8dp"
    android:text="@string/image_picker_dialog_choose_image"
    android:textAlignment="textStart" />

我正在使用材质主题,所以这将被膨胀成一个材质按钮 drawableStart 完全没有效果,但是 drawableEnd、bottom 和 top 工作得很好 当我将按钮标签设为文本视图时,drawableStart 有效 这似乎是一个错误,或者我错过了什么?

编辑:我的应用主题如下:

 <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!---colors-->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryVariant">@color/colorPrimaryVariant</item>
    <item name="colorPrimaryDark">@color/colorPrimaryVariant</item>

    <item name="colorSecondary">@color/colorSecondary</item>
    <item name="colorSecondaryVariant">@color/colorSecondaryVariant</item>
    <item name="colorAccent">@color/colorSecondary</item>

    <!--
    <item name="android:colorBackground">@color/colorBackground</item>
    -->

    <!--components-->
    <item name="textInputStyle">@style/text_input_layout_style</item>
    <item name="bottomSheetDialogTheme">@style/bottom_sheet_dialog_theme</item>

    <item name="spinnerStyle">@style/spinner_style</item>
    <item name="android:spinnerStyle">@style/spinner_style</item>

    <item name="android:toolbarStyle">@style/toolbar_style</item>
    <item name="toolbarStyle">@style/toolbar_style</item>

    <item name="actionOverflowButtonStyle">@style/overflow_button_style</item>
    <item name="android:actionOverflowButtonStyle">@style/overflow_button_style</item>

</style>

【问题讨论】:

  • 您好,请通过添加您的基本主题配置来提供更多上下文。
  • 我编辑了问题
  • 只使用drawableLeft
  • @KasımÖzdemir 好的,它在使用 drawableLeft 时有效,但它显示警告“考虑将 android:drawableLeft 替换为 android:drawableStart 以更好地支持从右到左的布局”
  • @KasımÖzdemir 谢谢兄弟,它可以工作并且还可以更改图标的色调以匹配应用程序主题样式添加答案,以便我可以接受它

标签: android material-design


【解决方案1】:

你应该像这样使用 app:icon:

在布局中:

<Button
   ...
   app:icon="@drawable/ic_camera"
   style="@style/Widget.MaterialComponents.Button.TextButton"
/>

它显示在开始处,在文本标签之前。您可以更改图标的重心、色调或大小。

了解更多information

【讨论】:

  • 为什么Material不简单也支持drawableStart?多亏了 Material,每个开发人员都必须随身携带另一块精神包袱。
【解决方案2】:

使用

android:drawableLeft

会解决问题,但不会为您提供 RTL(从右到左)支持。如果您的最终用户使用遵循 RTL 的不同语言,那么您的 Button 将不支持它。

从技术上讲,您是在 Activity 还是 Fragment 中管理 Button 的属性,

android:drawableStart

应该可以。

【讨论】:

    【解决方案3】:

    您可以更改为“应用兼容按钮”

    <androidx.appcompat.widget.AppCompatButton
                    android:id="@+id/continuar_anonimo_button"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_gravity="center"
                    app:backgroundTint="@color/greenPrimary"
                    android:background="@drawable/corner_boton_outline"
                    android:text="Continuar anonimamente"
                    android:paddingLeft="15dp"
                    android:drawableStart="@drawable/ic_google_color"
                    style="?android:textAppearanceSmall"/>
    

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2020-03-06
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多