ฉันมีแอป Android ซึ่งเมื่อผู้ใช้แตะ a TextView
ฉันต้องการใช้สไตล์ที่กำหนด
ฉันคิดว่าจะหาtextview.setStyle()
แต่มันไม่มี ฉันเหนื่อย
textview.setTextAppearance();
แต่ไม่ได้ผล
ฉันมีแอป Android ซึ่งเมื่อผู้ใช้แตะ a TextView
ฉันต้องการใช้สไตล์ที่กำหนด
ฉันคิดว่าจะหาtextview.setStyle()
แต่มันไม่มี ฉันเหนื่อย
textview.setTextAppearance();
แต่ไม่ได้ผล
คำตอบ:
ฉันทำได้โดยสร้างไฟล์ XML ใหม่res/values/style.xml
ดังนี้:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="boldText">
<item name="android:textStyle">bold|italic</item>
<item name="android:textColor">#FFFFFF</item>
</style>
<style name="normalText">
<item name="android:textStyle">normal</item>
<item name="android:textColor">#C0C0C0</item>
</style>
</resources>
ฉันยังมีรายการในไฟล์ "strings.xml" ดังนี้:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
จากนั้นในรหัสของฉันฉันสร้าง ClickListener เพื่อดักจับเหตุการณ์การแตะบน TextView นั้น: แก้ไข: เนื่องจาก API 23 'setTextAppearance' เลิกใช้
myTextView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
//highlight the TextView
//myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
} else {
myTextView.setTextAppearance(R.style.boldText);
}
myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
}
});
หากต้องการเปลี่ยนกลับคุณจะใช้สิ่งนี้:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
เหมือนที่โจนาธานแนะนำการใช้textView.setTextTypeface
งานฉันเพิ่งใช้ในแอปเมื่อไม่กี่วินาที
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
คุณตั้งค่าจากรหัส แบบอักษร
แบบเป็นโปรแกรม: รันไทม์
คุณสามารถเขียนโปรแกรมโดยใช้ 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
XML: เวลาออกแบบ
คุณสามารถตั้งค่าใน XML ได้เช่นกัน:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
หวังว่านี่จะช่วยได้
สรุป
ฉันพบว่าtextView.setTypeface(Typeface.DEFAULT_BOLD);
เป็นวิธีที่ง่ายที่สุด
ลองใช้รหัสบรรทัดนี้
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
ที่นี่จะได้รับ Typeface ปัจจุบันจาก textview นี้และแทนที่ด้วย Typeface ใหม่ แบบอักษรใหม่อยู่ที่นี่DEFAULT_BOLD
แต่คุณสามารถใช้งานได้อีกมากมาย
ดู doco สำหรับ setText () ใน TextView http://developer.android.com/reference/android/widget/TextView.html
ในการจัดรูปแบบสตริงของคุณให้แนบอ็อบเจ็กต์ android.text.style. * เข้ากับ SpannableString หรือดูเอกสารประกอบประเภททรัพยากรที่มีสำหรับตัวอย่างการตั้งค่าข้อความที่จัดรูปแบบในไฟล์ทรัพยากร XML
ขึ้นอยู่กับว่าคุณต้องการตั้งค่าสไตล์ใดคุณต้องใช้วิธีการต่างๆ TextAppearance มี setter ของตัวเอง TypeFace มี setter ของตัวเองพื้นหลังมี setter ของตัวเองเป็นต้น