以编程方式创建具有轮廓样式的 MaterialButton
Programmatically create a MaterialButton with Outline style
我想以编程方式创建一个按钮,如此处的设计指南中所定义: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 );
但这不会导致大纲变体:
您可以使用以下:
MaterialButton testSignIn = new MaterialButton(context, null, R.attr.borderlessButtonStyle);
String buttonText = "Sign-in & empty test account";
testSignIn.setText(buttonText);
MaterialButton
有strokeColor
和strokeWidth
用来设置轮廓。
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
}
创建轮廓按钮布局outlined_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);
如果您想应用 Outlined 按钮,您可以在构造函数中使用 R.attr.materialButtonOutlinedStyle
属性样式:
MaterialButton outlinedButton = new MaterialButton(context,null, R.attr.materialButtonOutlinedStyle);
outlinedButton.setText("....");
我想以编程方式创建一个按钮,如此处的设计指南中所定义: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 );
但这不会导致大纲变体:
您可以使用以下:
MaterialButton testSignIn = new MaterialButton(context, null, R.attr.borderlessButtonStyle);
String buttonText = "Sign-in & empty test account";
testSignIn.setText(buttonText);
MaterialButton
有strokeColor
和strokeWidth
用来设置轮廓。
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
}
创建轮廓按钮布局outlined_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);
如果您想应用 Outlined 按钮,您可以在构造函数中使用 R.attr.materialButtonOutlinedStyle
属性样式:
MaterialButton outlinedButton = new MaterialButton(context,null, R.attr.materialButtonOutlinedStyle);
outlinedButton.setText("....");