我编写了为文本视图设置/取消设置粗体和斜体样式的代码。 它运行完美,但我的 Android Studio 遇到了一些问题。
style &= (int) ~Typeface.BOLD;
- Android Studio 告诉我,转换为 (int) 是多余的,但是当我删除它时,它显示那里不允许使用该标志。这对程序的运行没有影响——无论如何它都能工作。
所以问题是:
为什么 Android Studio 告诉我转换是多余的,但是当我删除它时却告诉我这里不允许使用该标志?
我的代码是在文本视图中更改斜体/粗体样式的正确方法吗?
我的课堂片段:
Textview textview = findViewById(R.id.tv1)
CheckBox bold = findViewById(R.id.checkBoxBold);
bold.setOnCheckedChangeListener((buttonView, isChecked) -> {
Typeface typeface = textview.getTypeface();
int style = typeface.getStyle();
if (isChecked) style |= Typeface.BOLD;
else style &= (int) ~Typeface.BOLD;
Typeface newTypeface = Typeface.create(textview.getTypeface(), style);
textview.setTypeface(newTypeface);
});
CheckBox cursive = findViewById(R.id.checkBoxCursive);
cursive.setOnCheckedChangeListener((buttonView, isChecked) -> {
Typeface typeface = textview.getTypeface();
int style = typeface.getStyle();
if (isChecked) style |= Typeface.ITALIC;
else style &= (int) ~Typeface.ITALIC;
Typeface newTypeface = Typeface.create(textview.getTypeface(), style);
textview.setTypeface(newTypeface);
});
我见过人们对所有情况都做出 if 语句,但我不确定这种方法。
因此,您在以编程方式为 edittext/textview 设置字体时遇到问题。
对于你的第一个问题 - TypeFace.Bold 或 TypeFace.Italic 返回一个 Integer 而 edittext 或 textview 需要 Typeface。
为视图设置字体的第二个正确或最简单的方法如下:
Typeface typeface = textview.getTypeface();
int style = typeface.getStyle();
if (isChecked) style |= Typeface.ITALIC;
textview.setTypeface(null,Typeface.ITALIC);
您可以对所有字体执行相同的操作。我希望这可以帮助你。如果这没有帮助,请告诉我。我很乐意提供帮助。