web-dev-qa-db-ja.com

プログラムでアウトラインスタイルのMaterialButtonを作成する

次のように、設計上のガイドラインで定義されているボタンをプログラムで作成したいと思います。 https://material.io/design/components/buttons.html#outlined-button

enter image description here

XMLでは、次のレイアウトxmlを使用してこれを行うことができます。

<com.google.Android.material.button.MaterialButton
    Android:id="@+id/buttonGetStarted"
    style="@style/Widget.MaterialComponents.Button.OutlinedButton"
    Android:text="@string/title_short_intro" />

私が探しているのは、Javaコードを使用してこれを行う方法を示す例です。私は以下を試しました:

MaterialButton testSignIn = new MaterialButton( new ContextThemeWrapper( this, R.style.Widget_MaterialComponents_Button_OutlinedButton));
String buttonText = "Sign-in & empty test account";
testSignIn.setText( buttonText );

ただし、これはアウトラインバリアントにはなりません。

enter image description here

14
Peter

以下を使用できます。

MaterialButton testSignIn = new MaterialButton(context, null, R.attr.borderlessButtonStyle);
String buttonText = "Sign-in & empty test account";
testSignIn.setText(buttonText);
4
TheND

MaterialButtonにはstrokeColorstrokeWidthがあり、アウトラインの設定に使用されます。

val _strokeColor = getColorStateList(R.styleable.xxx_strokeColor)
val _strokeWidth = getDimensionPixelSize(R.styleable.xxx_strokeWidth, 0)

button = MaterialButton(context).apply {
    layoutParams = LayoutParams(MATCH_PARENT, WRAP_PARENT)
    strokeColor = _strokeColor
    strokeWidth = _strokeWidth
}
0
li2

アウトライン化されたボタンレイアウトを作成する

<?xml version="1.0" encoding="utf-8"?>
<com.google.Android.material.button.MaterialButton xmlns:Android="http://schemas.Android.com/apk/res/Android"
    style="@style/Widget.MaterialComponents.Button.OutlinedButton"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">
</com.google.Android.material.button.MaterialButton>

次に、ランタイムで輪郭を描かれたボタンを膨らませます

LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
MaterialButton button = (MaterialButton)inflater.inflate(R.layout.outlined_button, vg, false);
0
Anatoliy Shuba