آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ساخت TextView , EditText , Button منحصربفرد با فونت دلخواه

124847  8 سال پیش  8 سال پیش
+3 0

با عرض سلام خدمت دوستان از اونجایی که فونت دادن به برنامه به روش دستی سختی های خودشو داره و حجم کدنویسی رو بالا میبره میخوام روشی رو براتون توضیح بدم که ویوهای خودتون رو بنویسید و هر جا که خواستین صداش بزنین و خودتونو از شر کتابخونه هایی که فونت برنامه رو کلا عوض میکنن راحت کنین چون این کتابخونه ها بعضی ویوها رو تغییر میدن و بعضی ویو ها رو نه مثل کتابخونه معروف Calligraphy :

خب بریم سراغ ساخت کلاس های TextView , EditText , Button منحصربفرد:

1)کلاس  TextView شخصی :یک کلاس جاوا بسازید به هر اسمی که دوست دارید و Constractor نوشته یا همون TextView رو براش صدا بزنید و یک تابع با اسم دلخواه درونش بنویسید و اونجا فونت مدنظرتون رو به TextView بدین.کلاس TextView که من طراحی کردم به این شکله:

@SuppressLint("AppCompatCustomView")
public class TextViewIranSans extends TextView {

Typeface font;

public TextViewIranSans(Context context) {
super(context);

SetFont(context);
}

public TextViewIranSans(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
SetFont(context);
}

public TextViewIranSans(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
SetFont(context);
}

private void SetFont(Context context){

font = Typeface.createFromAsset(context.getAssets(), "IranSansLightNumber.ttf");
this.setTypeface(font);

}


}

شیوه ی کار برای Button , EditText هم به همین شکل هست :

کلاس Button که من طراحی کردم :


@SuppressLint("AppCompatCustomView")
public class ButtonIranSans extends Button {

Typeface font;

public ButtonIranSans(Context context) {
super(context);
SetFont(context);
}

public ButtonIranSans(Context context, AttributeSet attrs) {
super(context, attrs);
SetFont(context);
}

public ButtonIranSans(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
SetFont(context);
}

private void SetFont(Context context) {

font = Typeface.createFromAsset(context.getAssets(), "IranSansLightNumber.ttf");
this.setTypeface(font);

}

}

کلاس EditText که من طراحی کردم :

@SuppressLint("AppCompatCustomView")
public class EditTextIranSans extends EditText {

Typeface font;

public EditTextIranSans(Context context) {
super(context);
SetFont(context);
}

public EditTextIranSans(Context context, AttributeSet attrs) {
super(context, attrs);
SetFont(context);
}

public EditTextIranSans(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
SetFont(context);
}

private void SetFont(Context context) {

font = Typeface.createFromAsset(context.getAssets(), "IranSansLightNumber.ttf");
this.setTypeface(font);

}

}

حالا داخل کد xml به جای textView اون TextView که خودتون نوشتین رو صدا بزنین (به نوشته TextViewIranSans به جای textView که قبلا مینوشتین دقت کنید )

<android.myApp.com.myApp.TextViewIranSans
android:id="@+id/TextViewKey"
android:layout_width="0dp"
android:layout_weight="1"
android:text="این کلاس خودمون هست"
android:textColor="@color/Text"
android:layout_gravity="center"
android:gravity="center"
android:textSize="@dimen/Font"
android:layout_height="wrap_content" />

حالا دیگه هر وقت که از ویوهای خودتون استفاده کنید نیاز نیست فونت TextView , EditText , Button رو عوض کنید

امیدوارم براتون مفید باشه

 

+1 0
من مدتها قبل اینکارو میکردم ، اما الان از Calligraphy استفاده میکنم و کاملا هم راضی هستم ، مخصوصا اینکه در style هم قابل استفاده هستش. (8 سال پیش)
+2 0
الان دیگه تو اندروید استودیو 3 فونت دادن به ویوها ساپورت میشه و راحت تو xml میتونی فونت ست کنی و حتی تو preview هم نمایش میده! (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .