如何在Android中为按钮的文本加下划线?

Posted

技术标签:

【中文标题】如何在Android中为按钮的文本加下划线?【英文标题】:How to Underline Text of Button in Android? 【发布时间】:2015-10-21 12:16:54 【问题描述】:

我有一个透明的按钮,上面有图标和文字。

我想为按钮的文本添加下划线,但我无法做到这一点。

下面是我的xml代码:

<Button
     android:id="@+id/parkButton"
     android:layout_
     android:layout_
     android:drawableStart="@drawable/park"
     android:text="@string/button_name"
     android:background="@android:color/transparent"
     android:textColor="@android:color/black"/>

字符串文件有:

<resources>
    <string name="button_name"><u>Parking Areas</u></string>
</resources>

这种方法适用于 TextView,但不适用于 Button。 有什么建议吗?

【问题讨论】:

请看***.com/questions/8033316/… 是的,我已经阅读了这篇文章。这是针对 textview 的,在这种情况下效果很好。但同样的方法不适用于按钮文本 【参考方案1】:

仅代码

Java:

Button button = (Button) findViewById(R.id.park);
button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

科特林:

val button = findViewById<Button>(R.id.park);
button.paintFlags = button.paintFlags or Paint.UNDERLINE_TEXT_FLAG

带有静态文本的资源字符串(仅限 xml)

如果您的资源中有静态文本,您还可以在 strings.xml 中使用以下方法:

<string name="underlined_text"><u>I\'m underlined</u></string>

带有动态文本的资源字符串(xml + 代码)

如果您使用动态文本但不喜欢第一种方法(这也不是最好的恕我直言),您也可以使用以下方法:

字符串.xml

<string name="underlined_dynamic_text"><u>%s</u></string>

Java:

button.setText(getString(R.string.underlined_dynamic_text, "I'm underlined");

科特林:

button.text = getString(R.string.underlined_dynamic_text, "I'm underlined")

【讨论】:

我花了很长时间才回来!但是现在获得了更多关于 Android 的经验,我意识到这个解决方案本来可以很好地工作。感谢您的帮助。【参考方案2】:

这应该使您的ButtonText粗体下划线斜体同一时间。

strings.xml

<resources>
    <string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>

要将此字符串设置为您的 TextView,请在您的 ma​​in.xml 中执行此操作

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/btn1"
    android:layout_
    android:layout_
    android:text="@string/register" />

【讨论】:

我看不出你的代码和我的代码有什么区别。这是另一篇stackflow文章的答案的直接副本。没用 这段代码也适用于按钮。您使用的是什么操作系统版本? 如何设置另一个资源字符串,如@string/something 而不是版权文字?【参考方案3】:

您不能从 xml 文件中设置下划线。要使用代码设置下划线,您需要在按钮上设置下划线标志。

Button button = (Button) findViewById(R.id.park);
button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

【讨论】:

我试过你的代码。但在 Paint.UNDERLINE_TEXT_FLAG 中出现错误 - 知道吗? 尝试添加导入 android.graphics.Paint。如果您仍然收到错误,请分享错误详情【参考方案4】:

使用这个:

TextView txt=(TextView)findViewById(R.id.txt);
        String styledText = "<u>parking areas</u>";
        txt.setText(html.fromHtml(styledText), TextView.BufferType.SPANNABLE);

【讨论】:

【参考方案5】:
Button button= (Button) findViewById(R.id.park);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
button.setText(content);

【讨论】:

以上是关于如何在Android中为按钮的文本加下划线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在绘图标题或标签中为文本加下划线? (ggplot2)

如何在 MFC C++ 中为文本添加下划线

如何在 CListCtrl 中为单个项目加下划线

没有在 QTextBrowser 中为超链接加下划线

如何在 Android XML 中为文本添加下划线?

Markdown - 如何给文本加下划线