样式上的按位运算(textview 字体)

问题描述 投票:0回答:1

我编写了为文本视图设置/取消设置粗体和斜体样式的代码。 它运行完美,但我的 Android Studio 遇到了一些问题。

style &= (int) ~Typeface.BOLD;
- Android Studio 告诉我,转换为 (int) 是多余的,但是当我删除它时,它显示那里不允许使用该标志。这对程序的运行没有影响——无论如何它都能工作。

所以问题是:

  1. 为什么 Android Studio 告诉我转换是多余的,但是当我删除它时却告诉我这里不允许使用该标志?

  2. 我的代码是在文本视图中更改斜体/粗体样式的正确方法吗?

我的课堂片段:

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 语句,但我不确定这种方法。

java android textview typeface
1个回答
0
投票

因此,您在以编程方式为 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);

您可以对所有字体执行相同的操作。我希望这可以帮助你。如果这没有帮助,请告诉我。我很乐意提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.