【发布时间】:2015-10-13 04:05:48
【问题描述】:
我已将 textview 的文本定义为 -
<string name="text"><u>this is my text</u></string>
我需要在文本和下划线之间留一些空间,所以我在文本视图中添加了lineSpacingExtra="2dp",但它不起作用。
谁能告诉我如何做到这一点?
我需要支持 API 14 到 21。上面的测试是在 API 21 上完成的。
【问题讨论】:
标签: android
我已将 textview 的文本定义为 -
<string name="text"><u>this is my text</u></string>
我需要在文本和下划线之间留一些空间,所以我在文本视图中添加了lineSpacingExtra="2dp",但它不起作用。
谁能告诉我如何做到这一点?
我需要支持 API 14 到 21。上面的测试是在 API 21 上完成的。
【问题讨论】:
标签: android
我在这个问题上花了很多时间,这是我的发现!
首先,对于increase the spacing between the text and underline in css,你需要使用styles,不幸的是AndroidTextView在使用Html.fromHtml()时不支持style标签。不幸的是,甚至不支持span 标签(否则可能会被使用)。要查看支持的标签的完整列表,请查看HTML Tags Supported By TextView 博客。
既然我们知道基本的简单实现是行不通的,剩下的唯一方法就是伪造它(愚弄用户!)。在您拥有TextView 的xml 布局中,在其下方添加一个View,并具有以下属性。
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text"
android:textSize="20sp"/>
<View
android:id="@+id/underlineView"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignEnd="@+id/textView"
android:layout_alignLeft="@+id/textView"
android:layout_alignRight="@+id/textView"
android:layout_alignStart="@+id/textView"
android:layout_below="@+id/textView"
android:layout_marginTop="10dp"
android:background="@android:color/holo_red_dark"/>
如您所见,underlineView 正在模拟下划线。它的宽度固定在它上面的 textview 上。您可以将其颜色设置为您需要的任何颜色,重要的是您可以使用 android:layout_marginTop 属性调整间距。希望这会有所帮助!
【讨论】:
我的建议是从文本字符串中完全删除下划线,因为您无法从那里自定义间距。之后,您有几个选择。一种选择是使用以下链接中讨论的@drawable 功能:http://www.quora.com/How-do-I-design-edit-text-view-with-bottom-border-alone-in-Android-and-edit-text-view-with-some-special-symbol-like-below-image
如果您想要快速简单的“破解”,请转到创建 TextView 的 Activity 的布局 XML。将您的 TextView 包装在 LinearLayout 中,如下所示:
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text"
android:layout_marginBottom="2dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@color/underline" />
</LinearLayout>
第一个 TextView 是显示文本(“这是我的文本”)的位置,因此您可以将“layout_marginBottom”调整为文本和下划线之间所需的任何间距。第二个 TextView 充当您的下划线,因此要调整其粗细,您可以更改“layout_height”值。
完成这项工作的最后一步是进入项目中的“values”文件夹并创建一个名为“colors.xml”的新 XML 文件。本示例的全部内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="underline">#333333</color>
</resources>
只需更改此 XML 文件中的十六进制颜色值,即可根据您的选择自定义下划线颜色。
【讨论】: