我想在用户选中粗体复选框时将文本样式更改为粗体,但我无法执行此操作。选中复选框后,文本也会正常显示。
<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>
MainActivity
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);
}
...
}
答案 0 :(得分:1)
您需要添加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);
答案 1 :(得分:0)
在android中,您可以使用以下属性更改任何XML小部件的文本样式:
android:textStyle="bold"
您也可以使用:
android:textStyle="italic"
android:textStyle="bold|italic"
斜体字,粗体和斜体字。
您也可以使用:
editText.setTypeface(editText.getTypeface(), Typeface.BOLD);
必须使用以下方法从onCreate
方法调用此方法:
XML:
android:onClick="makeBold"
Activity:
public void makeBold(View V) {
if(checkBox.isChecked())
editText.setTypeface(editText.getTypeface(), Typeface.BOLD);
}
希望这有帮助!
答案 2 :(得分:0)
您需要在复选框中添加一个侦听器,以便检测复选框的状态何时发生更改,然后设置相应的字体:
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);
}
});