如何在Android TextView中增加文本和下划线之间的间距?

18

我想增加文本和其下划线之间的距离。我可以改变行高,但无法改变文本和其下划线之间的距离。我该怎么做?

private static final String FONTH_PATH = "fonts/Brandon_bld.otf";

...

selectTextView = (TextView) findViewById(R.id.selectTextView);
selectTextView.setTypeface(font);

SpannableString content = new SpannableString(getResources().getString(R.string.select_your_prove_type));
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
selectTextView.setText(content);

...

以及XML文件

<TextView
android:id="@+id/selectTextView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="536"
android:gravity="left"
android:lineSpacingMultiplier="0.8"
android:text="@string/select_your_prove_type"
android:textColor="@color/Blue"
android:textSize="@dimen/select_size" />

我不知道答案,也许是linespacingextra属性可以解决问题,但是为什么你的weight属性值为536 android:layout_weight="536" - Rahul Gupta
lineSpacingExtra对于这个问题无效。我根据iPhone psd分割了屏幕。在这个psd中,高度为1136像素,我的根布局weightSum也是1136。 - buraktemzc
4个回答

11

只需按以下方式使用

paddingBottom

即可。

         <android.support.design.widget.TextInputLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/fragment_activity_edit_desc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="16dp"
                android:hint="Description"
                android:textSize="34sp"
                tools:text="Secret Death Ray Design"/>


        </android.support.design.widget.TextInputLayout>

4
你是否在TextView中使用它?我尝试过,但在TextView中它无法正常工作。@Uzair Mohammad - buraktemzc

2

好的,这里是一个更完整的答案:

在你的styles.xml文件中,添加一个样式:

<style name="MyTour.HeadingText">
    <item name="android:background">@drawable/tour_header_line_layerlist</item>
</style>

现在创建一个名为tour_header_line_layerlist.xml的文件,其内容如下:
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="20dp" android:drawable="@drawable/tour_header_line"/>
</layer-list>

以上代码将为该行设置20dp的上边距(为了完整起见,将其提取到dimen.xml中)

现在创建相应的tour_header_line.xml文件:

<shape android:shape="line"
   xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
        android:width="1dp"
        android:color="@color/tour_subheading_color" />

现在在您的控件中引用样式:

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/tour_1_heading_text"
            android:id="@+id/heading_text" android:layout_gravity="center_horizontal"
            style="@style/MyTour.HeadingText" //notice this
            android:layout_marginTop="@dimen/margin_large"/>

如果您有其他问题,请告诉我!


这在android中运行得很好:top="20dp",为什么当我们改变top值时它就不起作用了? - Dilip
只有在下划线整个TextView时才有效,但无法在单独的行或行的部分上工作,并且不解决OP的UnderlineSpan问题。 - Tom

2
EditText中添加这些行。
<EditText
   ...
   android:includeFontPadding="true"
   android:paddingBottom="20dp" />

不支持 UnderlineSpan 或 TextView。 - Tom

-1

您可以使用可绘制文件(在我的情况下,我创建了一个阴影)添加自定义下划线,并使用以下方式设置此自定义下划线:

android:background="@drawable/shadow_file.xml"

接下来,通过为您的EditText添加填充,您可以在行和文本之间添加更多空间。

android:paddingBottom="@dimen/underline_space"

并在您的dimens.xml文件中定义此维度。

这对我很有效,希望对您也有帮助 :)


谢谢您分享您的答案,但我无法理解。您是否创建了自定义EditText?@jgarciabt - buraktemzc
抱歉我的解释有点简短。我有一个默认的EditText,但是带有自定义的下划线。您可以使用一个drawable文件(在我这个例子中,我创建了一个阴影)来添加自定义的下划线,并且通过android:background="@drawable/shadow_file.xml"来设置这个自定义的下划线。之后,通过padding属性,您可以在行和文本之间添加更多的空间。 - jgarciabt
1
请问您能分享shadow_file.xml文件或者解释如何添加它吗? - Dhasneem
如果您分享shadow_file.xml,那将更加清晰明了。 - Sulav Timsina

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