web-dev-qa-db-ja.com

右側にアイコンがある素材ボタン

googleの 新しい素材ボタン は本当に素晴らしいです。 ドキュメント に従って、デフォルトで左側に表示されるアイコンを設定できます。誰かがそれを右側に設定する方法を知っていますか?これについては何も見つかりません。

ありがとう。

13
Benjamin Ledet

私は今日同じ問題をグーグルで検索し、これを見つけました:Android:layoutDirection="rtl"。私のテストプロジェクトで動作します。

18
Anna

リリースのendに新しい重力値があります 1.1.0-alpha06

5
Victor Gabriel

_app:iconGravity_属性またはメソッド setIconGravity() を使用するだけです=。

Androidのマテリアルコンポーネントのバージョン1.1.0が必要です。

enter image description here

_app:iconGravity="end"_を使用することもできます。

documentation によると:

開始位置合わせアイコンがこのボタンに追加される場合、デフォルトのMaterialButtonスタイルで指定された「.Icon」スタイルのいずれかのようなスタイルを使用してください。 「.Icon」スタイルは、視覚的なバランスを改善するためにパディングをわずかに調整します。このスタイルは、開始位置合わせアイコンボタンでのみ使用する必要があります。アイコンが端揃えになっている場合、「。Icon」スタイルを使用することはできず、代わりに視覚的な調整が反映されるように手動でパディングを調整する必要があります。

2

解決策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> 鬼ごっこ

1
sma6871