谷歌的新材料按钮真的很棒。
根据文档,我们可以设置一个默认显示在左侧的图标。有谁知道怎么设置在右边?我找不到任何关于此的信息。
问问题
16290 次
4 回答
23
只需使用app:iconGravity
属性或方法setIconGravity()
。
它需要1.1.0版本的 android 材质组件。
您也可以使用app:iconGravity="end"
.
也根据文档:
如果向此按钮添加了开始对齐的图标,请使用默认 MaterialButton 样式中指定的“.Icon”样式之一的样式。“.Icon”样式略微调整填充以实现更好的视觉平衡。此样式只能与开始对齐的图标按钮一起使用。如果您的图标是端对齐的,则不能使用“.Icon”样式,而必须手动调整填充,以便镜像视觉调整。
于 2019-08-17T23:51:24.387 回答
23
我今天用谷歌搜索了同样的问题,发现了这个:android:layoutDirection="rtl"
。它适用于我的测试项目。
于 2018-12-09T08:02:20.853 回答
7
在1.1.0-alpha06版本中有一个新的end重力值
于 2019-05-21T14:30:33.460 回答
1
解决方案 1
对每个按钮使用此扩展方法 (kotlin):
fun MaterialButton.setRightIcon() {
TextViewCompat.setCompoundDrawablesRelative(this, null, null, this.icon, null)
}
解决方案2(更好的方法)
扩展MaterialButton
类以在任何地方使用:
class RtlMaterialButton(context: Context, attrs: AttributeSet) : MaterialButton(context, attrs) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
updateIcon()
}
private fun updateIcon() {
TextViewCompat.setCompoundDrawablesRelative(this, null, null, icon, null)
}
}
解决方案 3(在 中工作minSDK>=17
)
如果你想textStart
对图标使用重力,你可以android:layoutDirection="rtl"
对每个按钮使用。
在您的标签android:supportsRtl="true"
中的应用程序中设置AndroidManifest.xml
<Application>
于 2019-04-28T12:40:23.510 回答