从按钮文本中删除下划线(Android)

5
我正在尝试去掉按钮文本的下划线。这是我的代码,在其中我添加了下划线:
buttonNews.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

我也不明白为什么有人把button.getPaintFlags()放在括号里面,使用上面的代码就可以正常工作:

button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

请问如何在程序中去掉按钮内文本的下划线?
2个回答

7

他们将button.getPaintFlags()放在括号内,以保留默认/旧标志。

要删除UNDERLINE_TEXT_FLAG标志,您可以执行以下操作:

button.setPaintFlags( button.getPaintFlags() & (~ Paint.UNDERLINE_TEXT_FLAG));

这将设置所有旧标记,除了 Paint.UNDERLINE_TEXT_FLAG

不用谢。我已经告诉过你,它将排除该标志。 - Rami
抱歉,我还是不明白。所以我从Paint.UNDERLINE_TEXT_FLAG得到了8,在~Paint.UNDERLINE_TEXT_FLAG之后我得到了-9。但在Paint.java中并没有这样的“static final int”。 - user5083158
这是一个例子:假设第一次你执行setPaintFlags(flag1 | flag2 | flag3 | Paint.UNDERLINE_TEXT_FLAG );,那么当你执行setPaintFlags( button.getPaintFlags() & (~ Paint.UNDERLINE_TEXT_FLAG));时,就像执行setPaintFlags(flag1 | flag2 | flag3 );=> 你设置了除UNDERLINE_TEXT_FLAG之外的所有旧标志。因此它不是静态值,这就是为什么你得到一个负数的原因。 - Rami

-2

使用此代码来下划线文本

tv.setText(Html.fromHtml("<u>Your Text</u>"));

并去掉下划线

tv.setText(Html.fromHtml("Your Text")); 

或者

tv.setText("Your Text"); 

这个不起作用。我可以通过这种方式设置文本,但它没有被下划线。 - user5083158
试一下SpannableString content = new SpannableString(getString(R.string.bike_garage)); content.setSpan(new UnderlineSpan(), 0, content.length(), 0); tvBikeGarage.setText(content); - Chandrakant Dvivedi
尝试使用此代码:button.setPaintFlags(button.getPaintFlags() & (~Paint.UNDERLINE_TEXT_FLAG)); - Pravin Fofariya

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