/ / Modifier le style de texte par programme - Android, Android Studio

Modifier le style de texte par programme - Android, Android Studio

Je souhaite modifier le style du texte en gras lorsque l'utilisateur coche la case en gras, mais je suis incapable de le faire. Le texte apparaît normalement même après avoir coché la case.

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:gravity="top"
/>

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bold"
android:id="@+id/bold"
android:layout_alignBottom="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="57dp"
android:checked="false" />

</RelativeLayout>

Activité principale

public class MainActivity extends AppCompatActivity {
CheckBox checkBox;
EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

editText= (EditText) findViewById(R.id.editText);
checkBox=(CheckBox)findViewById(R.id.bold);
if(checkBox.isChecked())
editText.setTypeface(editText.getTypeface(), Typeface.BOLD);

}
...
}

Réponses:

1 pour la réponse № 1

Vous devez ajouter un OnCheckedChangeListener et changer la police de caractères là-bas.

Pour une case à cocher gras et italique, vous pouvez faire quelque chose comme ceci:

CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button, boolean checked) {
Typeface typeface = editText.getTypeface();

switch(button.getId()) {
case R.id.bold:
if(typeface.isItalic()) {
editText.setTypeface(typeface, checked?Typeface.BOLD_ITALIC:Typeface.ITALIC);
} else {
editText.setTypeface(typeface, checked?Typeface.BOLD:Typeface.NORMAL);
}
break;
case R.id.italic:
if(typeface.isBold()) {
editText.setTypeface(typeface, checked?Typeface.BOLD_ITALIC:Typeface.BOLD);
} else {
editText.setTypeface(typeface, checked?Typeface.ITALIC:Typeface.NORMAL);
}
break;
}
}
};

bold.setOnCheckedChangeListener(listener);
italic.setOnCheckedChangeListener(listener);

0 pour la réponse № 2

Sous Android, vous pouvez modifier le style de texte de tout widget XML en utilisant l'attribut suivant:

android:textStyle="bold"

Vous pouvez aussi utiliser:

android:textStyle="italic"
android:textStyle="bold|italic"

Pour les italiques et les caractères gras et italiques respectueusement.

Vous pouvez aussi utiliser:

editText.setTypeface(editText.getTypeface(), Typeface.BOLD);

Cela doit être appelé d'un onCreate méthode en utilisant ce qui suit:

XML:
android:onClick="makeBold"

Activity:
public void makeBold(View V) {
if(checkBox.isChecked())
editText.setTypeface(editText.getTypeface(), Typeface.BOLD);
}

J'espère que cela t'aides!


0 pour la réponse № 3

Vous devez ajouter un écouteur à la case à cocher, afin de détecter le changement de statut de la case à cocher, puis définir le type de caractère approprié:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
editText.setTypeface(editText.getTypeface(), Typeface.BOLD);
} else {
editText.setTypeface(editText.getTypeface(), Typeface.NORMAL);
}
});