Làm cách nào để đặt TextView
kiểu (in đậm hoặc in nghiêng) trong Java và không sử dụng bố cục XML?
Nói cách khác, tôi cần viết android:textStyle
bằng Java.
Làm cách nào để đặt TextView
kiểu (in đậm hoặc in nghiêng) trong Java và không sử dụng bố cục XML?
Nói cách khác, tôi cần viết android:textStyle
bằng Java.
Câu trả lời:
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);
Để giữ kiểu chữ trước đó
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
sẽ không loại bỏ kiểu in đậm hoặc in nghiêng từ a TextView
. Bạn sẽ cần phải sử dụng textView.setTypeface(null, Typeface.NORMAL);
cho điều đó.
textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Hãy thử điều này để thiết lập TextView
cho đậm hoặc in nghiêng
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
tv.setTypeface(null, Typeface.BOLD);
điều này sẽ không làm điều tương tự (xóa một kiểu chữ hiện có)?
Bạn có thể lập trình bằng cách sử dụng setTypeface()
:
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
Bạn có thể đặt Trực tiếp trong tệp XML <TextView />
như:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
with in Java and without using XML
bằng cách này cũng sẽ giúp người khác.
Bạn có hai lựa chọn:
Tùy chọn 1 (chỉ hoạt động cho đậm, in nghiêng và gạch chân):
String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));
Lựa chọn 2:
Sử dụng một Spannable ; nó phức tạp hơn, nhưng bạn có thể tự động sửa đổi các thuộc tính văn bản (không chỉ in đậm / in nghiêng, cả màu sắc).
typeFace
bạn có thể đặt một kiểu duy nhất cho toàn bộ văn bản.
Bạn có thể thực hiện theo chương trình bằng setTypeface()
phương pháp:
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
Bạn có thể đặt trực tiếp trong tệp XML <TextView />
như thế này:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Hoặc bạn có thể đặt phông chữ fav của mình (từ tài sản). để biết thêm thông tin xem liên kết
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
bây giờ thiết lập các textview
thuộc tính ..
text.setTypeface(null, Typeface.BOLD); //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC); //-- for bold & italic the text
text.setTypeface(null, Typeface.ITALIC); // -- for italic the text
Nó sẽ là
yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);
và in nghiêng sẽ có thể được thay thế Typeface.DEFAULT_BOLD
bằng Typeface.DEFAULT_ITALC
.
Hãy cho tôi biết làm thế nào nó hoạt động.
Sử dụng textView.setTypeface(Typeface tf, int style);
để đặt thuộc tính kiểu của TextView
. Xem tài liệu dành cho nhà phát triển để biết thêm.
Thử cái này:
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Cách tiêu chuẩn để làm điều này là sử dụng các kiểu tùy chỉnh. Ví dụ-
Trong styles.xml
thêm những điều sau đây.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
<item name="android:textStyle">bold|italic</item>
</style>
Áp dụng phong cách này cho bạn TextView
như sau.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/MyApp.TextAppearance.LoginText" />
Một cách bạn có thể làm là:
myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);
Một tùy chọn khác nếu bạn muốn giữ kiểu chữ trước đó và không muốn mất áp dụng trước đó:
myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Bạn có thể thử như thế này:
<string name="title"><u><b><i>Your Text</i></b></u></string>
Cách dễ nhất bạn có thể làm dựa trên tiêu chí lựa chọn kiểu là:
String pre = "", post = "";
if(isBold){
pre += "<b>"; post += "</b>";
}
if(isItalic){
pre += "<i>"; post += "</i>";
}
if(isUnderline){
pre += "<u>"; post += "</u>";
}
textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
Vì tôi muốn sử dụng một phông chữ tùy chỉnh chỉ kết hợp một số câu trả lời hoạt động với tôi. Rõ ràng các thiết lập trong lượt layout.xml
thích của tôi android:textStlyle="italic"
đã bị AOS bỏ qua. Vì vậy, cuối cùng tôi đã phải làm như sau: trong strings.xml
chuỗi mục tiêu được khai báo là:
<string name="txt_sign"><i>The information blah blah ...</i></string>
sau đó thêm vào mã:
TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);
Tôi đã không thử Spannable
tùy chọn (mà tôi cho rằng PHẢI làm việc) nhưng
textSign.setText(Html.fromHtml(getString(R.string.txt_sign)))
không có tác dụng. Ngoài ra nếu tôi loại bỏ các italic tag
từ strings.xml
bỏ setTypeface()
tất cả một mình nó không có tác dụng một trong hai. Android rắc rối ...
Và như đã giải thích ở đây Tài nguyên chuỗi dành cho nhà phát triển Android nếu bạn cần sử dụng các tham số trong tài nguyên văn bản theo kiểu của mình, bạn phải thoát khỏi dấu ngoặc mở
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
và gọi formatHtml (chuỗi)
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
Đây là điều duy nhất phù hợp với tôi trên OnePlus 5T được định cấu hình với phông chữ OnePlus Slate ™:
textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));
Các phương pháp khác sẽ khiến nó rơi trở lại Roboto khi BÓNG hoặc BÌNH THƯỜNG.
Trong khi sử dụng các thẻ được đơn giản hóa với AndroidX, hãy cân nhắc sử dụng HtmlCompat.fromHtml ()
String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));
Cách tốt nhất là định nghĩa nó trong styles.xml
<style name="common_txt_style_heading" parent="android:style/Widget.TextView">
<item name="android:textSize">@dimen/common_txtsize_heading</item>
<item name="android:textColor">@color/color_black</item>
<item name="android:textStyle">bold|italic</item>
</style>
Và cập nhật nó trong TextView
<TextView
android:id="@+id/txt_userprofile"
style="@style/common_txt_style_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_small"
android:text="@string/some_heading" />
1) Bạn có thể thiết lập nó với TypeFace. 2) Bạn có thể sử dụng trực tiếp trong chuỗi DOM (trong thư mục giá trị của bạn) 3) Bạn có thể Chuỗi myNewString = "Đây là văn bản in đậm của tôi Đây là chuỗi in nghiêng của tôi Đây là chuỗi gạch chân của tôi
Bạn có thể đặt kiểu chữ khác nhau bằng ví dụ được đưa ra dưới đây -
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Hoặc nếu bạn muốn đặt một phông chữ khác và kiểu chữ của nó. Thêm nó vào tài sản hoặc thư mục thô và sau đó sử dụng nó như
Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
tv1.setTypeface(face);
Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
tv2.setTypeface(face1);