Je voudrais par programmation créer un bouton tel que défini dans les lignes directrices de conception ici: https://material.io/design/components/buttons.html#outlined-button , ressemblant à ceci:
En XML, je peux le faire en utilisant ce morceau de mise en page xml:
<com.google.Android.material.button.MaterialButton
Android:id="@+id/buttonGetStarted"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
Android:text="@string/title_short_intro" />
Ce que je recherche est un exemple qui montre comment faire cela en utilisant Java code? J'ai essayé ce qui suit:
MaterialButton testSignIn = new MaterialButton( new ContextThemeWrapper( this, R.style.Widget_MaterialComponents_Button_OutlinedButton));
String buttonText = "Sign-in & empty test account";
testSignIn.setText( buttonText );
Mais cela n'entraîne pas la variante de contour:
Vous pouvez utiliser ci-dessous:
MaterialButton testSignIn = new MaterialButton(context, null, R.attr.borderlessButtonStyle);
String buttonText = "Sign-in & empty test account";
testSignIn.setText(buttonText);
MaterialButton
a strokeColor
et strokeWidth
qui est utilisé pour définir le contour.
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
}
Créer la disposition des boutons soulignés décrites_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>
Ensuite, gonflez le bouton indiqué lors de l'exécution
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
MaterialButton button = (MaterialButton)inflater.inflate(R.layout.outlined_button, vg, false);