تغییر فونت WebView چگونه ممکن است؟
سلام دوباره خدمت استاد عزیزم
بالاخره با سرچ در آموزشهای شما و همچنین سرچ در اینترنت توانستم با استفاده از webview و نمایش یک صفحه Html و خواندن آن از Assets یه صفحه جدید بسازم که با کلیک روی دکمه وارد صفحه مورد نظرم شوم ولی یه مشکل کوچیک پیش اومده و اون اینکه فونتی که در صفحه Html دارم رو میخوام عوض کنم کدش رو هم پیدا کردم ولی خطا میزنه نمیدونم عیب کارم از کجاست لطفا راهنماییم کنید .
package asefi.masoud.app.test5;
import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.TextView;
public class s2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.j1);
WebView wv = (WebView) findViewById(R.id.wv);
TextView txt = (TextView) findViewById(R.id.txt);
Typeface by = Typeface.createFromAsset(getAssets(), "B Titr Bold.ttf");
txt.setTypeface(by);
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
final WebView webview;
WebSettings webSettings = wv.getSettings();
webSettings.setFixedFontFamily(font);
wv.setBackgroundColor(0);
wv.setBackgroundResource(R.drawable.text2);
int begir = getIntent().getExtras().getInt("btn");
switch (begir) {
case 0:
wv.loadUrl("file:///android_asset/m.html");
txt.setText("مقدمه");
break;
default:
break;
}
}
}
روی متد setFixedFontFamily و با موس که میری روش این خطا رو میزنه:
The method setFixedFontFamily(String) in the type WebSettings is not applicable for the arguments (Typeface)
1- در بعضی نسخ 3 اندروید و به بالا هیچ روشی ( هیچ روشی ) برای نمایش فونت دلخواه در WebView وجود نداره یا بهتر بگیم یک باگ هست که روش صحیح نمایش فونت روی این نسخه ها اجرا نمیشه.
2- روش صحیح نمایش فونت، راهی که شما عمل کرده اید نیست. با کلیک واژه جدیدی که به شما می دم سعی کنید از روش صحیح این مشکل رو حل کنید. تمام خصوصی نظیر setFixFontFamily و کلاً هر چی set...FontFamily هست رو از کدتون حذف کنید چون کاری نمی کنه. شما باید در داخل CSS داخل HTML تگ های فونت تعریف کنید مثل آن چیزی که مرسوم است و در سایتهای عادی فونت دار تعریف می کنند. اما آدرس فونت های داخل این تگ ها به آدرس assets اشاره می کند و در نهایت WebView ( اگر شامل نسخه های باگ دار نباشد ) می تواند فونت را نشان دهد و حتی می توانید تعداد کثیری فونت را در یک صفحه نشان دهید.
سورس درستی برای من ارسال نکرده اید. مثل زیر عمل کنید و باید نتیجه بگیرید:
loadDataWithBaseURL("file:///android_asset/",myhtml,"text/html","utf-8",null);
@font-face {
font-family: 'sampleFont'
src: url('fonts/sampleFont.ttf');
}
body {font-family: 'sampleFont';}
کدهایی که دیدید جزء ساختارهای CSS هست که در HTML استفاده میشه و برای تعیین یک فونت دلخواه از سیستم یا از وب به عنوان فونت element ها استفاده میشه. بنابراین برای کسب اطلاعات بیشتر، مطالعه اینترنت در خصوص این نوع نگارش و تعریف فونت پیشنهاد میشه.
قسمت دومش هم بارگزاری صفحه با ارائه assets به webView هست که بتونه از توش فونت رو استخراج کنه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .