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

تغییر فونت WebView چگونه ممکن است؟

مسعود  12 سال پیش  12 سال پیش
+1 0

سلام دوباره خدمت استاد عزیزم
بالاخره با سرچ در آموزشهای شما و همچنین سرچ در اینترنت توانستم با استفاده از 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)

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
+2 0

چند نکته بسیار حساس و مهم هست که در نمایش وب باید بدونید:

1- در بعضی نسخ 3 اندروید و به بالا هیچ روشی ( هیچ روشی ) برای نمایش فونت دلخواه در WebView وجود نداره یا بهتر بگیم یک باگ هست که روش صحیح نمایش فونت روی این نسخه ها اجرا نمیشه.

2- روش صحیح نمایش فونت، راهی که شما عمل کرده اید نیست. با کلیک واژه جدیدی که به شما می دم سعی کنید از روش صحیح این مشکل رو حل کنید. تمام خصوصی نظیر setFixFontFamily و کلاً هر چی set...FontFamily هست رو از کدتون حذف کنید چون کاری نمی کنه. شما باید در داخل CSS داخل HTML تگ های فونت تعریف کنید مثل آن چیزی که مرسوم است و در سایتهای عادی فونت دار تعریف می کنند. اما آدرس فونت های داخل این تگ ها به آدرس assets اشاره می کند و در نهایت WebView ( اگر شامل نسخه های باگ دار نباشد ) می تواند فونت را نشان دهد و حتی می توانید تعداد کثیری فونت را در یک صفحه نشان دهید.
0 0
حق با شما هست استاد اصلا از اون روش من نشد که نشد. الان اون کاری که گفتید تو HTML انجام بدم , انجام دادم ولی بازم تغییری اعمال نشد . ولی بازم کد رو خودتون چک کنید ببنید مشکل نداشته باشه مخصوصا تو آدرس Assets. اون فونت رو هم که معرفی کردم ریختم تو پوشه Assets. (12 سال پیش)
0 0
پاسخ بعدی رو بخونید. (12 سال پیش)
پاسخ به سوال 
uncocoder  12 سال پیش
0 0

سورس درستی برای من ارسال نکرده اید. مثل زیر عمل کنید و باید نتیجه بگیرید:

 
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 هست که بتونه از توش فونت رو استخراج کنه.


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