如何在Android Edittext中取消所选文本的加粗?

7

我正在使用一个编辑文本来支持粗体、斜体和下划线属性。在选择文本并将其加粗后,我成功了。现在我想在点击“普通”按钮后取消粗体。

Typeface.NORMAL 在这里不起作用。有人能提供其他选项吗?

Button btnBold = (Button) findViewById(R.id.btnBold);
        btnBold.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startSelection = etx.getSelectionStart();
                endSelection = etx.getSelectionEnd();


                Spannable s = etx.getText();
                s.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startSelection, endSelection, 0);
            }
        });


Button btnNormal = (Button) findViewById(R.id.btnNormal );
        btnNormal .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                **//What I have to do here.**
            }
        });

查看这篇文章,你就会明白剩下的了。http://stackoverflow.com/questions/37002177/how-to-bold-or-italic-or-underline-the-selected-text-in-edittext-programatically/42810064#42810064 - Bosco
我遇到了同样的问题,即所选文本未更新,整个字符串更新。 - Nimisha V
4个回答

7
Button btnNormal = (Button) findViewById(R.id.btnNormal );
        btnNormal .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               Spannable str = etx.getText();
               StyleSpan[] ss = str.getSpans(selectionStart, selectionEnd, StyleSpan.class);

       for (int i = 0; i < ss.length; i++) {
           if (ss[i].getStyle() == android.graphics.Typeface.BOLD){
            str.removeSpan(ss[i]);          
           }
       }
    etx.setText(str);

    }
});    

1
有人知道为什么将字体设置为NORMAL就不起作用吗? - Omar HossamEldin

0

在我的项目中,我使用这个结构

textView.typeface = Typeface.create(textView.typeface, Typeface.NORMAL)

-1

与您在第一个 onClick() 中使用的类似,但是在第二个 onclick() 中,不要使用 s.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startSelection, endSelection, 0);,而是使用 s.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), startSelection, endSelection, 0);


1
我已经在问题中提到Typeface.NORMAL无法正常工作。 - Nik88
抱歉,我在你编辑问题之前就发布了这个答案。 - Saurabh

-2

只需使用:

Typeface.NORMAL

你可以在Android 文档上查看它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接