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 № 1Vous 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);
}
});