คุณขีดเส้นใต้ข้อความในไฟล์ XML อย่างไร ฉันไม่พบตัวเลือกในtextStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
คุณขีดเส้นใต้ข้อความในไฟล์ XML อย่างไร ฉันไม่พบตัวเลือกในtextStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
คำตอบ:
หากคุณกำลังใช้สตริงทรัพยากรไฟล์ 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);
หวังว่านี่จะช่วยได้
<u>
แท็กไม่ทำงานเช่นบางครั้งคุณใช้แบบอักษรที่กำหนดเอง อย่างไรก็ตามการเขียนโปรแกรมโดยพื้นฐานUnderlineSpan
ไม่เคยล้มเหลวสำหรับฉันดังนั้นฉันขอแนะนำให้เป็นโซลูชันที่น่าเชื่อถือที่สุด
<u>
และเป็น<\u>
XML ก็เพียงพอแล้ว
ใช้สิ่งนี้:
TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
UnderlineSpan
เพื่อที่คุณจะต้อง
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
หากยังไม่ได้ผล
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
เนื่องจาก "<" อาจเป็นคีย์เวิร์ดในบางครั้ง
และสำหรับการแสดง
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
ก่อนอื่นไปที่ไฟล์ String.xml
คุณสามารถเพิ่มแอตทริบิวต์ HTML เช่นตัวเอียงหรือตัวหนาหรือขีดเส้นใต้ได้ที่นี่
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
อีกวิธีในการทำเช่นนี้คือการสร้างคอมโพเนนต์ที่กำหนดเองเพื่อขยาย 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!" />
เพื่อให้ 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
คุณสามารถใช้มาร์กอัปด้านล่าง แต่ทราบว่าถ้าคุณตั้งค่าtextAllCaps
จะtrue
มีผลต่อการขีดเส้นใต้จะถูกลบออก
<resource>
<string name="my_string_value">I am <u>underlined</u>.</string>
</resources>
บันทึก
การใช้ textAllCaps กับสตริง (login_change_settings) ที่มีมาร์กอัป มาร์กอัปจะลดลงโดยการแปลงแคป
การแปลงข้อความ textAllCaps จะลงเอยด้วยการเรียก toString บน CharSequence ซึ่งมีผลสุทธิจากการลบมาร์กอัปใด ๆ เช่น. การตรวจสอบนี้ค้นหาการใช้งานของสตริงที่มีมาร์กอัปที่ระบุ textAllCaps = true ด้วย
มีหลายวิธีในการบรรลุข้อความที่ขีดเส้นใต้ใน 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);
ฉันใช้วิธีการด้านล่างมันได้ผลสำหรับฉัน ด้านล่างเป็นตัวอย่างของปุ่ม แต่เราสามารถใช้ใน TextView ได้เช่นกัน
Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
หากคุณต้องการเปรียบเทียบสตริงข้อความหรือข้อความจะเปลี่ยนแบบไดนามิกคุณสามารถสร้างมุมมองในเลย์เอาต์ข้อ จำกัด ซึ่งจะปรับตามความยาวของข้อความเช่นนี้
<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>
public void setUnderLineText(TextView tv, String textToUnderLine) {
String tvt = tv.getText().toString();
int ofe = tvt.indexOf(textToUnderLine, 0);
UnderlineSpan underlineSpan = new UnderlineSpan();
SpannableString wordToSpan = new SpannableString(tv.getText());
for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
ofe = tvt.indexOf(textToUnderLine, ofs);
if (ofe == -1)
break;
else {
wordToSpan.setSpan(underlineSpan, ofe, ofe + textToUnderLine.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
}
}
}
TextView tv = findViewById(R.id.tv);
tv.setText("some text");
setUnderLineText(tv, "some");
รองรับ TextView childs เช่น EditText, Button, Checkbox
ถ้าคุณต้องการ
- ข้อความขีดเส้นใต้ที่คลิกได้?
- ขีดเส้นใต้หลาย ๆ ส่วนของ TextView?
จากนั้นตรวจสอบคำตอบนี้
style="text-decoration: underline;"