بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در webwiew

مدیریت گفتگو
BrotherV 12 سال پیش
آخرین تغییر: 11 سال پیش

با سلام خدمت تمامی دوستان و استاد گرامی جناب آقای آقاجانی

مشکل اول:
در webwiev در صورت فعال بودن  HardwareAccelerator پس از لودینگ صفحه، با بالا و پایین کردن webwiev، شروع به چشمک زدن میکنه که کار را زشت به نظر میرسونه.

مشکل دوم:
با نگه داشتن انگشت روی وب ویو پس از مدت زمان طولانی، صفحه وب ویو بسته میشه، یعنی سیستم صفحه را می بنده.

خوب متن سوال به علت پیدا شدن جواب تغییر کرد و امیدوارم دوستانی که به این مشکل بر میخورن اینجا به جوابشون برسن.
موفق و پیروز باشید.

نظرات

پاسخ‌ها 6

BrotherV 12 سال پیش

حل مشکل دوم:

خوب از اونجایی که این مشکل حاد بود و برای خودم جالب سعی کردم تا یه راهکاری براش پیدا کنم.
مشکل آنجایی شروع می شد که مدت زمان طولانی  انگشتم روی webview قرار می گرفت، در این حالت سیستم به طور اتوماتیک متد longclickable را فراخونی می کرد، خوب چون به در بسته می خورد برنامه را متوقف می کرد. خوب در ویژگی های webview اومدیم و گزینه longclickable را غیرفعال کردیم ولی نشد. بالاخره با اعمال کد زیر حالت longclickable را در برنامه حل کردم. الان هر چی انگشت را روی صفحه قرار میدم  دیگه خطا نمی ده

WebView wv=(WebView) findViewById(R.id.webview1);
wv.loadUrl("file:///android_asset/ABCDEF.html");

wv.setLongClickable(true); wv.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; } });

 

نظرات

BrotherV 12 سال پیش

حل مشکل اول:

مشکل از اونجایی شروع میشه که (HardwareAccelerated=true) قرار میگیره، خوب این حالت برای API های 11 به بالا هست، از این بابت برای حل این موضوع باید یا بیخیال فعال سازی شتابدهنده بشیم یا از کدهای زیر در طول اجرای برنامه استفاده کنیم.
برای این کار نیاز هست تا متد API 11 را در برنامه فراخونی کنیم. چاره ای نیست. کد خطهای زیر این مشکل را حل می کنن.

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
.
.
.
WebView wv=(WebView) findViewById(R.id.webView1);
////حل مشکل
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
////افزایش سرعت رندر
wv.getSettings().setRenderPriority(RenderPriority.HIGH); wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

نظرات

Criss 12 سال پیش

سلام دوستان من با WEBVIEWتا مشکل دارم

1.میخام صفحه ایی که باز میشه از انداز WEBVIEW بیرون نزنه و دقیقا CENTER INSIDE باشه

WebView webView1 = (WebView) findViewById(R.id.webView1);
webView1.loadUrl("http://uncocoder.com");

فکر کنمWebView  ، سنتر انساید android:scaleType="centerInside" زو نداشته باشه ! چاره چیه ؟

نظرات

BrotherV 12 سال پیش
سلام،،، دقیقا چطوری میزنه بیرون؟ من کامل متوجه منظور شما نشدم.اما اگر منظورتون اینه که به فزض مثال یه بگ گراند دارید و میخواید قشنگ روی بگ گراند بیفته ، یه جورایی باید با Margine بازی کنی. از طرفی اگر میخوای دقیقا وسط کادر باشه در صورتی که Gravity را در Layout به صورت Center قرار بدی ( در صورت Lenear بودن Layout) ویجت شما اتوماتیک در وسط قرار میگیره. نمی دونم منظوز شما را درست متوجه شدم یا نه. موفق و پیروز باشید.
Criss 12 سال پیش

 

 

نظرات

BrotherV 12 سال پیش

برای حل مشکل بالا کد فایل های زیر را در برنامه قرار بده.من این کدها را استفاده کردم و خوب هم جواب میده و با فرایندهای دیگه مشکلی نخواهد داشت. ایشالا سر حوصله کدها را توضیح میدم.

@SuppressLint("SetJavaScriptEnabled")
public class AC_WebBrowser extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.ac_webbrowser);
	
	WebView webView = (WebView) findViewById(R.id.wv_WebBrowser);
	webView.setInitialScale(1);
	webView.getSettings().setJavaScriptEnabled(true);
	webView.getSettings().setLoadWithOverviewMode(true);
	webView.getSettings().setUseWideViewPort(true);
	webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
	webView.setScrollbarFadingEnabled(false);

	try {
	     // load the url
	     webView.loadUrl("http://uncocoder.com");
	    } catch (Exception e) {
	     e.printStackTrace();
	    }
}
}

این هم کد XML برای اکتیویتی هست.

 <WebView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/wv_WebBrowser"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.webbrowser" >

</WebView>

نظرات

saberi888 11 سال پیش
سلام من هم مشکل دوستمون رو دارم ، یعنی در حالت webview ، صفحه نمایش متن بزرگتر از صفحه گوشی میشه ، دقیقا تصویر بالا. این کدی که شما نوشتین رو دقیقا کجای برنامه باید درج کرد؟
BrotherV 11 سال پیش
سلام در خصوص مشکل بالا اگر میخواید صفحه وب را لود کنید، کافیه کدهای مربوط به وب ویو که بالا نوشتم را در اکتیویتی مورد نظرتون وارد کنید. البته شما به طور کامل نمی تونید یه مرورگر اینترنت کامل را با کدهای بالا پیاده کنید اما برای تمام صفحه شدن وب سایت ها از کدهای بالا استفاده باید کرد.
saberi888 11 سال پیش

سلام دوست عزیز
منم همین مشکل رو داشتم و بالاخره حل شد!
من کد html   رو براتون فرستادم ، همه چی دقیقا مثل توضیحات استاد توی قسمت 03-24  (آموزش کتاب) هست. تنها تفاوت  ، چهار خط مونده به آخر کد هست :

<div class="rtl">

داخل تگ div کلاس رو "rtl" میزاریم.

همین!
مشکل حل شد. :

 


 
<style>
@font-face {
font-family: 'yekan';
src: url('font/test.svg') format('svg');
}

* {
text-align: right;
color: #fff;
}

html,body {
font-size: 13px;
background-color: #000;
line-height: 200%;
}

.ltr {
direction: ltr;
}

.rtl {
direction: rtl;
}

.wideLine {
line-height: 2.0em;
}

h2 {
color: #f80;
}
</style>

<div class="rtl">
<body>
</br>
</br>
</body>

</div>

نظرات


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