Tôi muốn làm một TextView
nội dung của một chữ in đậm, in nghiêng và gạch chân. Tôi đã thử đoạn mã sau và nó hoạt động, nhưng không gạch chân.
<Textview android:textStyle="bold|italic" ..
Tôi phải làm nó như thế nào? Bất kỳ ý tưởng nhanh chóng?
Tôi muốn làm một TextView
nội dung của một chữ in đậm, in nghiêng và gạch chân. Tôi đã thử đoạn mã sau và nó hoạt động, nhưng không gạch chân.
<Textview android:textStyle="bold|italic" ..
Tôi phải làm nó như thế nào? Bất kỳ ý tưởng nhanh chóng?
Câu trả lời:
Tôi không biết về gạch chân, nhưng để in đậm và in nghiêng thì có "bolditalic"
. Không có đề cập đến gạch chân ở đây: http://developer.android.com/reference/android/widget/TextView.html#attr_android:textStyle
Lưu ý bạn rằng để sử dụng các đề cập bolditalic
bạn cần, và tôi trích dẫn từ trang đó
Phải là một hoặc nhiều (cách nhau bởi '|') của các giá trị không đổi sau.
vì vậy bạn sẽ sử dụng bold|italic
Bạn có thể kiểm tra câu hỏi này để gạch chân: Tôi có thể gạch chân văn bản trong bố cục Android không?
textView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
Điều này sẽ làm cho TextView của bạn đậm , gạch chân và in nghiêng cùng một lúc.
chuỗi DOM
<resources>
<string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>
Để đặt Chuỗi này thành TextView của bạn, hãy thực hiện điều này trong tệp main.xml của bạn
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/register" />
hoặc trong JAVA ,
TextView textView = new TextView(this);
textView.setText(R.string.register);
Đôi khi, cách tiếp cận trên sẽ không hữu ích khi bạn có thể phải sử dụng Văn bản động. Vì vậy, trong trường hợp đó SpannableString có hiệu lực.
String tempString="Copyright";
TextView text=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.ITALIC), 0, spanString.length(), 0);
text.setText(spanString);
ĐẦU RA
new StyleSpan(Typeface.BOLD_ITALIC)
Hoặc chỉ như thế này trong Kotlin:
val tv = findViewById(R.id.textViewOne) as TextView
tv.setTypeface(null, Typeface.BOLD_ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD)
// OR
tv.setTypeface(null, Typeface.ITALIC)
// AND
tv.paintFlags = tv.paintFlags or Paint.UNDERLINE_TEXT_FLAG
Hoặc trong Java:
TextView tv = (TextView)findViewById(R.id.textViewOne);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD|Typeface.ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD);
// OR
tv.setTypeface(null, Typeface.ITALIC);
// AND
tv.setPaintFlags(tv.getPaintFlags()|Paint.UNDERLINE_TEXT_FLAG);
Giữ cho nó đơn giản và trong một dòng :)
paintFlags
cần thiết không Nó hoạt động mà không có điều đó
Để in đậm và in nghiêng bất cứ điều gì bạn đang làm là chính xác cho dấu gạch dưới, hãy sử dụng mã sau
Xin chàoAndroid.java
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.widget.TextView;
public class HelloAndroid extends Activity {
TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview = (TextView)findViewById(R.id.textview);
SpannableString content = new SpannableString(getText(R.string.hello));
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textview.setText(content);
}
}
tệp chính
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"
android:textStyle="bold|italic"/>
chuỗi tệp
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloAndroid!</string>
<string name="app_name">Hello, Android</string>
</resources>
underline
giá trị vượt qua Null thay vì new UnderlineSpan()
như sau content.setSpan(null, 0, content.length(), 0);
Đây là một cách dễ dàng để thêm phần gạch chân, trong khi duy trì các cài đặt khác:
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Chương trình:
Bạn có thể thực hiện lập trình bằng phương thức setTypeface ():
Dưới đây là mã cho kiểu chữ mặc định
textView.setTypeface(null, Typeface.NORMAL); // for Normal Text
textView.setTypeface(null, Typeface.BOLD); // for Bold only
textView.setTypeface(null, Typeface.ITALIC); // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic
và nếu bạn muốn đặt Kiểu chữ tùy chỉnh:
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL); // for Normal Text
textView.setTypeface(textView.getTypeface(), Typeface.BOLD); // for Bold only
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC); // for Italic
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); // for Bold and Italic
XML:
Bạn có thể đặt Trực tiếp trong tệp XML như:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Nếu bạn đang đọc văn bản đó từ một tập tin hoặc từ mạng.
Bạn có thể đạt được nó bằng cách thêm các thẻ HTML vào văn bản của bạn như đã đề cập
This text is <i>italic</i> and <b>bold</b>
and <u>underlined</u> <b><i><u>bolditalicunderlined</u></b></i>
và sau đó bạn có thể sử dụng HTML lớp rằng các quá trình HTML chuỗi thành văn bản theo kiểu thể hiển thị.
// textString is the String after you retrieve it from the file
textView.setText(Html.fromHtml(textString));
style="?android:attr/listSeparatorTextViewStyle
Chỉ cần một dòng mã trong xml
android:textStyle="italic"
Bạn có thể đạt được nó một cách dễ dàng bằng cách sử dụng Kotlin buildSpannedString{}
dưới sự core-ktx
phụ thuộc của nó .
val formattedString = buildSpannedString {
append("Regular")
bold { append("Bold") }
italic { append("Italic") }
underline { append("Underline") }
bold { italic {append("Bold Italic")} }
}
textView.text = formattedString