ساخت TextView , EditText , Button منحصربفرد با فونت دلخواه
با عرض سلام خدمت دوستان از اونجایی که فونت دادن به برنامه به روش دستی سختی های خودشو داره و حجم کدنویسی رو بالا میبره میخوام روشی رو براتون توضیح بدم که ویوهای خودتون رو بنویسید و هر جا که خواستین صداش بزنین و خودتونو از شر کتابخونه هایی که فونت برنامه رو کلا عوض میکنن راحت کنین چون این کتابخونه ها بعضی ویوها رو تغییر میدن و بعضی ویو ها رو نه مثل کتابخونه معروف 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 رو عوض کنید
امیدوارم براتون مفید باشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .