Mar*_*rek 5 android android-layout
我无法将drawableLeft图标居中。
我可以轻松地将图标放在文本的左侧,但是如果将重力设置为居中,则只有文本居中,而没有图标。
<Button
android:id="@+id/patient_list_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/patientList"
android:drawableLeft="@drawable/ic_icon_two_heads"
android:layout_marginBottom="15dp"
style="@style/darkBlueButtonWithImage"/>
Run Code Online (Sandbox Code Playgroud)
<style name="darkBlueButtonWithImage">
<item name="android:drawablePadding">10dp</item>
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">10dp</item>
<item name="android:background">@drawable/radius_dark_blue_button</item>
<item name="android:gravity">center_vertical|left</item>
<item name="android:drawableTint">@color/white</item> <!-- has to be set in activity.java -->
</style>
Run Code Online (Sandbox Code Playgroud)
我该如何实现?
最后,经过这么多年,我们有可能以简单直观的方式实现这种行为。所有你需要做的就是使用MaterialButton从谷歌材料库。然后使用带有图标的样式。之后,您可以使用app:iconGravity属性并将其设置为textStart
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.Button.Icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some text"
app:iconGravity="textStart"
app:icon="@drawable/some_icon" />
Run Code Online (Sandbox Code Playgroud)
IMO最简单的解决方案:
yourButtonView.text = SpannableString(" ${getString(R.string.your_string)}").apply {
setSpan(
ImageSpan(requireContext(), R.drawable.your_icon),
0,
1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
Run Code Online (Sandbox Code Playgroud)
是不是有点老套?或许。它适用于每个按钮(MaterialButton、AppCompatButton、Button 等)吗?确实如此。
我更喜欢这个,而不是创建自定义视图或类似的东西的所有麻烦。
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |