Материал Кнопка со значком справа

кнопка нового материала от Google действительно хороша. Согласно документации, мы можем установить значок, который отображается по умолчанию слева. Кто-нибудь знает, как правильно его установить? Я ничего не могу найти по этому поводу.

Благодарю.

Ответ 1

Я погуглил сегодня ту же проблему и нашел это: android:layoutDirection="rtl". Это работает в моем тестовом проекте.

Ответ 2

В версии 1.1.0-alpha06 добавлено новое значение силы тяжести для конца .

Ответ 3

Просто используйте атрибут app:iconGravity или метод setIconGravity().

Требуется версия 1.1.0 компонентов материала для Android.

enter image description here

   Вы также можете использовать app:iconGravity="end".

Также согласно документации:

Если к этой кнопке добавлен выровненный по значку значок, используйте стиль, подобный одному из стилей ".Icon", указанных в стилях MaterialButton по умолчанию. Стили ".Icon" слегка корректируют отступы для достижения лучшего визуального баланса. Этот стиль следует использовать только с выровненной по значку кнопкой. Если ваш значок выровнен по концу, вы не можете использовать стиль ".Icon" и вместо этого должны вручную отрегулировать отступы так, чтобы визуальная настройка была зеркальной.

Ответ 4

Решение 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 gravity для иконки, вы можете использовать android:layoutDirection="rtl" для каждой кнопки.

установить android:supportsRtl="true" в вашем приложении AndroidManifest.xml в вашем <Application>