مشکل در webwiew
با سلام خدمت تمامی دوستان و استاد گرامی جناب آقای آقاجانی
مشکل اول:
در webwiev در صورت فعال بودن HardwareAccelerator پس از لودینگ صفحه، با بالا و پایین کردن webwiev، شروع به چشمک زدن میکنه که کار را زشت به نظر میرسونه.
مشکل دوم:
با نگه داشتن انگشت روی وب ویو پس از مدت زمان طولانی، صفحه وب ویو بسته میشه، یعنی سیستم صفحه را می بنده.
خوب متن سوال به علت پیدا شدن جواب تغییر کرد و امیدوارم دوستانی که به این مشکل بر میخورن اینجا به جوابشون برسن.
موفق و پیروز باشید.
حل مشکل دوم:
خوب از اونجایی که این مشکل حاد بود و برای خودم جالب سعی کردم تا یه راهکاری براش پیدا کنم.
مشکل آنجایی شروع می شد که مدت زمان طولانی انگشتم روی 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; } });
حل مشکل اول:
مشکل از اونجایی شروع میشه که (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);
سلام دوستان من با WEBVIEWتا مشکل دارم
1.میخام صفحه ایی که باز میشه از انداز WEBVIEW بیرون نزنه و دقیقا CENTER INSIDE باشه
WebView webView1 = (WebView) findViewById(R.id.webView1);
webView1.loadUrl("http://uncocoder.com");
فکر کنمWebView ، سنتر انساید android:scaleType="centerInside" زو نداشته باشه ! چاره چیه ؟
برای حل مشکل بالا کد فایل های زیر را در برنامه قرار بده.من این کدها را استفاده کردم و خوب هم جواب میده و با فرایندهای دیگه مشکلی نخواهد داشت. ایشالا سر حوصله کدها را توضیح میدم.
@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>
سلام دوست عزیز
منم همین مشکل رو داشتم و بالاخره حل شد!
من کد 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>
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
