ahm*_*ama 18 android material-design
这是按钮:
<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" />
Run Code Online (Sandbox Code Playgroud)
我正在使用材质主题,所以这将被膨胀为材质按钮 drawableStart 根本没有任何效果,但是 drawableEnd、底部和顶部工作得很好当我将按钮标签设为文本视图时,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>
Run Code Online (Sandbox Code Playgroud)
Kas*_*mir 36
你应该像这样使用 app:icon:
在布局中:
<Button
...
app:icon="@drawable/ic_camera"
style="@style/Widget.MaterialComponents.Button.TextButton"
/>
Run Code Online (Sandbox Code Playgroud)
它显示在开头,文本标签之前。您可以更改图标的重力、色调或大小。
欲了解更多信息
使用
android:drawableLeft
Run Code Online (Sandbox Code Playgroud)
将解决问题,但不会为您提供 RTL(从右到左)支持。如果您的最终用户使用遵循 RTL 的不同语言,那么您Button将不支持它。
从技术上讲,您是在 Activity 还是 Fragment 中管理 Button 的属性,
android:drawableStart
Run Code Online (Sandbox Code Playgroud)
应该管用。