ورود

View Full Version : مشکل با Toast



sobhan1990
جمعه 20 اردیبهشت 1392, 23:04 عصر
سلام
برای فارسی کردن تویست از کد زیر استفاده میکنم ولی متاسفانه مربع نشون میده!


Toast toast = Toast.makeText(MainActivity.this, "", 1);
toast.setText(Farsi.Convert("سيب"));

toast.show();

از کلاس پرشین ریشیپ هم استفاده کردم ولی نتیحه همین بوده.
ممنون میشم راهنمایی کنید.

Modernidea
شنبه 21 اردیبهشت 1392, 00:59 صبح
سلام

برای Toast یک فونت فارسی تعریف کنید، مشکل حل میشه.
برای اینکار باید Toast سفارشی تولید کنید.

این کار راحته!

برای اینکه یک تابع مرجع نمایش Toast داشته باشید و از همه کلاس ها به آن دسترسی داشته باشید، لازم است که تابعی به شکل ذیل در کلاس main یعنی کلاسی که به عنوان فرم اصلی برنامه است و حتما با اجرای برنامه آن کلاس هم اجرا میشود، تعریف کنید و از آن به عنوان نمایش پیغام (Toast) استفاده کنید:


public static void msg(Context context, String txt){
Toast toast = Toast.makeText(context, Farsi.Convert(txt), Toast.LENGTH_SHORT);
LinearLayout toastLayout = (LinearLayout) toast.getView();
TextView toastTV = (TextView) toastLayout.getChildAt(0);
toastTV.setTextSize(12);
toastTV.setTypeface(typeface);
toast.show();
}


typeface را به عنوان یک متغیر سراسری تعریف کنید.
static Typeface typeface;

در تابع onCreate کلاس، مقدار دهی اش کنید:
if (typeface == null) {
typeface = Typeface.createFromAsset(getApplicationContext()
.getAssets(), "fonts/DroidNaskh-Regular.ttf");
}

حالا از هر کجای برنامه که نیاز دارید این تابع را فراخوانی کنید!

MainActivity.msg(MainActivity.this, "سلام");


موفق باشید.