18

我想以编程方式创建一个此处设计指南中定义的按钮:https ://material.io/design/components/buttons.html#outlined-button ,如下所示:

在此处输入图像描述

在 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 );

但这不会导致大纲变体:

在此处输入图像描述

4

4 回答 4

8

您可以在下面使用:

MaterialButton testSignIn = new MaterialButton(context, null, R.attr.borderlessButtonStyle);
String buttonText = "Sign-in & empty test account";
testSignIn.setText(buttonText);
于 2018-12-25T17:13:11.523 回答
2

如果要应用Outlined按钮,可以R.attr.materialButtonOutlinedStyle在构造函数中使用属性样式:

MaterialButton outlinedButton = new MaterialButton(context,null, R.attr.materialButtonOutlinedStyle);
outlinedButton.setText("....");

在此处输入图像描述

于 2020-08-01T07:37:10.463 回答
0

MaterialButtonhasstrokeColorstrokeWidthwhich 用于设置轮廓。

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
}
于 2019-03-13T00:51:47.227 回答
0

创建轮廓按钮布局 outline_button.xml

<?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);
于 2019-11-30T05:58:51.093 回答