Làm cách nào để bạn gạch dưới văn bản trong tệp XML? Tôi không thể tìm thấy một tùy chọn trong textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Làm cách nào để bạn gạch dưới văn bản trong tệp XML? Tôi không thể tìm thấy một tùy chọn trong textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Câu trả lời:
Nếu bạn đang sử dụng một tập tin xml nguồn string (hỗ trợ thẻ HTML), nó có thể được thực hiện bằng <b> </b>
, <i> </i>
và <u> </u>
.
<resources>
<string name="your_string_here">
This is an <u>underline</u>.
</string>
</resources>
Nếu bạn muốn gạch chân điều gì đó từ việc sử dụng mã:
TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);
Hi vọng điêu nay co ich
<u>
thẻ cơ bản không hoạt động, ví dụ: đôi khi nếu bạn đang sử dụng phông chữ tùy chỉnh. Tuy nhiên, cơ bản theo lập trình UnderlineSpan
thực sự chưa bao giờ thất bại đối với tôi, vì vậy tôi muốn giới thiệu nó như là giải pháp đáng tin cậy nhất.
<u>
và <\u>
trong XML, vậy là đủ.
Dùng cái này:
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>
Nếu nó không hoạt động thì
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
Bởi vì "<" có thể là một từ khóa tại một thời điểm nào đó.
Và để hiển thị
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
Trước hết, hãy truy cập tệp String.xml
bạn có thể thêm bất kỳ thuộc tính HTML nào như in nghiêng hoặc in đậm hoặc gạch dưới tại đây.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Một cách khác để làm điều đó, là tạo một thành phần tùy chỉnh mở rộng TextView. Nó tốt cho những trường hợp bạn cần có nhiều TextView được gạch chân.
Đây là mã cho thành phần:
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);
}
}
Và cách sử dụng nó trong xml:
<com.myapp.components.LinkTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
Để hoàn thành câu trả lời Bhavin. Đối với ví dụ, để thêm gạch chân hoặc chuyển hướng.
((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>
và bạn có thể biết thẻ tương thích tại đây: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html
Bạn có thể sử dụng đánh dấu dưới đây, nhưng lưu ý rằng nếu bạn thiết lập textAllCaps
để true
tác dụng gạch dưới sẽ được gỡ bỏ.
<resource>
<string name="my_string_value">I am <u>underlined</u>.</string>
</resources>
Ghi chú
Sử dụng textAllCaps với một chuỗi (login_change_settings) có chứa đánh dấu; đánh dấu sẽ bị giảm do chuyển đổi giới hạn
Biến đổi văn bản textAllCaps sẽ kết thúc việc gọi toString trên CharSequence, có tác dụng thực sự là xóa bất kỳ đánh dấu nào chẳng hạn như. Kiểm tra này tìm cách sử dụng các chuỗi có chứa đánh dấu cũng chỉ định textAllCaps = true.
Có nhiều cách khác nhau để đạt được văn bản được gạch chân trong Android TextView.
1. <u>This is my underlined text</u>
hoặc
I just want to underline <u>this</u> word
2.Bạn có thể làm điều tương tự theo lập trình.
`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`
3.Có thể được thực hiện bằng cách tạo một SpannableString và sau đó đặt nó làm thuộc tính văn bản TextView
SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);
Tôi đã sử dụng phương pháp dưới đây, nó làm việc cho tôi. Dưới đây là ví dụ cho Button nhưng chúng ta cũng có thể sử dụng trong TextView.
Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Nếu bạn muốn so sánh chuỗi văn bản hoặc văn bản sẽ thay đổi động thì bạn có thể tạo một dạng xem trong bố cục Constraint, nó sẽ điều chỉnh theo độ dài văn bản như thế này
<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");
Đồng thời hỗ trợ các phần tử con của TextView như EditText, Button, Checkbox
Nếu bạn muốn
- Văn bản gạch chân có thể nhấp?
- Gạch chân nhiều phần của TextView?
Sau đó kiểm tra câu trả lời này
style="text-decoration: underline;"