你如何在Android XML中强调文本?

时间:2012-04-04 20:47:23

标签: android textview android-styles underline

如何在XML文件中为文本加下划线?我在textStyle找不到选项。

11 个答案:

答案 0 :(得分:151)

如果您使用的是字符串资源xml文件(支持HTML标记),则可以使用<b> </b><i> </i><u> </u>来完成。

<resources>
    <string name="your_string_here">
        This is an <u>underline</u>.
    </string>
</resources>

如果您想使用代码使用下划线:

TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);

希望这有帮助

答案 1 :(得分:53)

使用此:

TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

答案 2 :(得分:19)

<resource>
    <string name="your_string_here">This is an <u>underline</u>.</string>
</resources>

如果它不起作用那么

<resource>
<string name="your_string_here">This is an &lt;u>underline&lt;/u>.</string>

因为&#34;&lt;&#34;可能在某个时候成为关键字。

用于显示

TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));

答案 3 :(得分:3)

首先转到String.xml文件

你可以在这里添加任何html属性,如斜体或粗体或下划线。

    <resource>
        <string name="your_string_here">This is an <u>underline</u>.</string>
    </resources>

答案 4 :(得分:2)

另一种方法是创建一个扩展TextView的自定义组件。这对于需要多个带下划线的TextView的情况很有用。

以下是组件的代码:

package com.myapp.components;

import android.content.Context;
import android.support.v7.widget.AppCompatTextView;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.util.AttributeSet;

public class LinkTextView extends AppCompatTextView {
    public LinkTextView(Context context) {
        this(context, null);
    }

    public LinkTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        SpannableString content = new SpannableString(text);
        content.setSpan(new UnderlineSpan(), 0, content.length(), 0);

        super.setText(content, type);
    }
}

如何在xml中使用它:

<com.myapp.components.LinkTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

答案 5 :(得分:1)

我用下面的方法,它对我有用。下面是Button的示例,但我们也可以在TextView中使用。

Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

答案 6 :(得分:1)

您可以使用下面的标记,但请注意,如果您将textAllCaps设置为true,则会删除下划线效果。

<resource>
    <string name="my_string_value">I am <u>underlined</u>.</string>
</resources>


注意

将textAllCaps与包含标记的字符串(login_change_settings)一起使用;标记将被大写转换

删除

textAllCaps文本转换将最终在CharSequence上调用toString,这具有删除任何标记的净效果,例如。此检查查找包含标记的字符串的用法,该标记也指定textAllCaps = true。

答案 7 :(得分:1)

如果要比较文本字符串或文本会动态变化,则可以在“约束”布局中创建一个视图,该视图将根据文本长度进行调整

 <android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/txt_Previous"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="Last Month Rankings"
        android:textColor="@color/colorBlue"
        android:textSize="15sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <View
        android:layout_width="0dp"
        android:layout_height="0.7dp"
        android:background="@color/colorBlue"
        app:layout_constraintEnd_toEndOf="@+id/txt_Previous"
        app:layout_constraintStart_toStartOf="@+id/txt_Previous"
        app:layout_constraintBottom_toBottomOf="@id/txt_Previous"/>


</android.support.constraint.ConstraintLayout>

答案 8 :(得分:0)

完成Bhavin的回答。 例如,添加下划线或重定向。

((TextView) findViewById(R.id.tv_cgu)).setText(Html.fromHtml(getString(R.string.upload_poi_CGU)));

<string name="upload_poi_CGU"><![CDATA[ J\'accepte les <a href="">conditions générales</a>]]></string>

你可以在这里知道兼容的标签: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html

答案 9 :(得分:0)

有多种方法可以在Android TextView中获得带下划线的文本。

1。<u>This is my underlined text</u>  或

I just want to underline <u>this</u> word

2。您可以通过编程方式进行同样的操作。

`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`

3。可以通过创建SpannableString并将其设置为TextView文本属性来完成

SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);

答案 10 :(得分:0)

创建一个字符串资源:

<string name="HEADER_DELTA"><b><u>DELTA</u></b></string>

并添加到您的文本视图

    <TextView
        android:id="@+id/txtDeltaText"
        style="@style/Default_TextBox_Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:gravity="center_horizontal"
        android:text="@string/HEADER_DELTA"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/txtActualMetric"
        app:layout_constraintTop_toBottomOf="@+id/txtMetricName" />