استفاده از یک فونت خاص در سطح برنامه
سلام
می خواستم بدونم روشی هست که بشه برای Activity یک فونت تعریف کرد که تمام متن های موجود در آن Activity از اون فونت استفاده کنند؟روشی که استاد آموزش دادند باید برای هر عنصر تک تک فونت را عوض کنیم و این کار زمانی که چندین Text View در Activity داریم کمی طاقت فرسا است.
سلام ، ایجاد یه کلاس مشتق شده از TextView و اعمال فونت مورد نظر :
public class TextViewX extends TextView {
public static Typeface FONT_NAME;
public TextViewX(Context context) {
super(context);
if (!isInEditMode())
set(context);
}
public TextViewX(Context context, AttributeSet attrs) {
super(context, attrs);
if (!isInEditMode())
set(context);
}
public TextViewX(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (!isInEditMode())
set(context);
}
private void set(Context context) {
if (F null F Bold.ttf");
this.setTypeface(FONT_NAME);
}
}
نکته : دومین خط از متد set رو نمیدونم این ادیتور استاد چرا اونجوری نشون میده اصلش اینه :
if (F null F Bold.ttf");
خیلی جالب انگیز شد بصورت متن هم نوشتم باز اونجوری نشون میده! تصویر متد set رو میزارم :
استفاده از TextViewX :
<ir.uncocoder.android.TextViewX
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtMessage"
android:text="@string/message" />
البته روش بالا فقط برای textview جواب میده. به علاوه روش هایی که دوستان در بالا گفتن یک روش دیگه استفاده از این متد تو یک کلاس helper و صدا زدنش تو لود تمام activity هاست. در قسمتی که میبینید چک میشه که آیا کنترل textview هست یا خیر میتونید سایر کنترل های مد نظرتون رو هم چک کنید.
public static final void setAppFont(ViewGroup mContainer, Typeface mFont)
{
if (mContainer == null || mFont == null)
return;
final int mCount = mContainer.getChildCount();
// Loop through all of the children.
for (int i = 0; i < mCount; ++i)
{
final View mChild = mContainer.getChildAt(i);
if (mChild instanceof TextView)
{
// Set the font if it is a TextView.
((TextView) mChild).setTypeface(mFont);
}
else if (mChild instanceof ViewGroup)
{
// Recursively attempt another ViewGroup.
setAppFont((ViewGroup) mChild, mFont);
}
}
}
البته نیاز به توضیح نداره اگه قصدتون استفاده تو تمام activity هاست کافیه یک activity بسازید . این تابع رو صدا بزنید و بقیه activity ها رو از اون مشتق کنید.لازم به ذکره این یک نوع تابع بازگشتی هستش که داره خودش رو دوباره صدا میزنه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .