我想在用户选中粗体复选框时将文本样式更改为粗体,但我无法做到这一点。即使在选中复选框后,文本也会正常显示。
<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>
主要 Activity
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);
}
...
}
最佳答案
您需要添加一个 OnCheckedChangeListener
并在那里更改字体。
对于粗体和斜体复选框,您可以这样做:
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);
关于android - 以编程方式更改文本样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234885/