ورود

View Full Version : تغییر فونت چندین تکست ویو با یک دستور



fsalimi
پنج شنبه 02 مرداد 1393, 17:53 عصر
سلام من 20 تا textView دارم که توش متنی هست میخام بایک دستور فونت همه textView هارو تغییر بدم

slr560
پنج شنبه 02 مرداد 1393, 18:05 عصر
تا اونجایی که من میدونم نمیشه اینجوری
شما باید اول یه کلاس بسازی و اونو از کلاس TextView مشتق کنی
و تغییرات لازم رو توی کلاس میدی . مثلا typeFace رو یه انتخاب میکنی.
دیگه هر جا خواستی یه تکست ویو لینک بدی میای از کلاس ساخته شده خودت استفاده میکنی. این میشه از طریق کد نویسی جاوا
از طریق xml هم میشه. یادم نیس چجوری بود . باید سرچ کنی

Nevercom
پنج شنبه 02 مرداد 1393, 21:25 عصر
public void overrideFonts(final View v) { final boolean isBelowICS = VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH;
try {
if (v instanceof ViewGroup) {
final ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
final View child = vg.getChildAt(i);
overrideFonts(child);
}
} else {
final Typeface font = Typeface.createFromAsset(context.getAssets(),
"fonts/adob2.otf");
if (v instanceof TextView) {
((TextView) v).setTypeface(font);
if (isBelowICS) {
((TextView) v).setText(PersianReshape.reshape(((TextView) v).getText()
.toString()));
// v.setAnimation(AnimationUtils.loadAnimation(contex t,
// R.anim.button));
}
} else if (v instanceof EditText) {
((EditText) v).setTypeface(font);
if (isBelowICS) {
((EditText) v).setText(PersianReshape.reshape(((EditText) v).getText()
.toString()));
}
} else if (v instanceof Button) {
((Button) v).setTypeface(font);
if (isBelowICS) {
((Button) v).setText(PersianReshape.reshape(((Button) v).getText()
.toString()));
}


}
}


} catch (final Exception e) {
}
}

نحوه ی استفاده:
overrideFonts(findViewById(android.R.id.content));
البته من تو این متد از PersianReshape هم استفاده کردم که باید کلاسش رو اضافه کنید و یا کدهای مربوط به PersianReshape رو حذف کنید

downloadha93
شنبه 01 شهریور 1393, 09:14 صبح
کسی موفق شد من که هرچی امتحان کردم نشد لطفا دوستان راهنمایی کنید

farhadfery
شنبه 01 شهریور 1393, 20:13 عصر
شما باید یه کلاس از textview مشتق (extend) کنید. در کلاسی که نوشتید تنظیمات یکسان را اعمال کنید مثلا فونت و سایز و ...
مثال" :


import android.content.Context;import android.graphics.Canvas;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

public class FontTextView extends TextView {


public FontTextView(Context context) {
super(context);
Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf");
this.setTypeface(face);
}

public FontTextView(Context context, AttributeSet attrs) {
super(context, attrs);
Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf");
this.setTypeface(face);
}

public FontTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf");
this.setTypeface(face);
}

protected void onDraw (Canvas canvas) {
super.onDraw(canvas);


}
}
در xml


<com.util.FontTextView android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/accountInfoText"
android:textColor="#727272" android:textSize="18dp" />

slr560
یک شنبه 02 شهریور 1393, 03:01 صبح
خیلی ساده تر از این حرفاس
این دوست عزیزمون با چند خط کد اینو پیاده سازی کرده
با تشکر از محسن افشین
https://github.com/mafshin/CustomTextView

id1385
یک شنبه 02 شهریور 1393, 15:23 عصر
با تشکر از دوست عزیزمون
روش دیگه ای هم هست اینه:

Utils.java

public static void SetFont(Context ctx, TextView tv, String font_name) {
try {
tv.setTypeface(FontUtils.getFonts(ctx, font_name));
} catch (Exception e) {
__log(e.getMessage());
}
}



FontUtils.java

//package com.netlib.oujaman.functions;
//inser pakage name here


import java.util.HashMap;
import java.util.Map;


import android.content.Context;
import android.graphics.Typeface;


public class FontUtils {


private static Map<String, Typeface> TYPEFACE = new HashMap<String, Typeface>();


public static Typeface getFonts(Context context, String name) {
Typeface typeface = TYPEFACE.get(name);
if (typeface == null) {
typeface = Typeface.createFromAsset(context.getAssets(), "fonts/"
+ name);
TYPEFACE.put(name, typeface);
}
return typeface;
}
}



usage:
استفاده در کلاس
1 : گرفتن نام فونت از String ها

Utils.SetFont(getContext(), holder.item_left_button, getContext().getString(R.string.font_ICON_webfont) );


2. نام مستقیم فونت

Utils.SetFont(getContext(), holder.item_left_button, "Myfont.ttf");


استفاده در اکتیویها هم که مشخصه

Utils.SetFont(this, (TextView) findViewById(R.id.tv_app_name), getString(R.string.font_afsaneh));
// OR
Utils.SetFont(this, (TextView) findViewById(R.id.tv_app_name), "Myfont.ttf");



موفق باشید