发布网友 发布时间:2022-04-23 20:59
共2个回答
懂视网 时间:2022-04-15 01:47
最近使用到WebView,使用过程中遇到了以下的问题,和大家分享一下。 首先看一下控制webView宽度的方法: 这是API对于此方法的说明:当false时,此WebView的宽度始终是Web页面CSS中控制的宽度,因此要适配屏幕此方法要为true。 API说明:这种加载模式,是缩小
最近使用到WebView,使用过程中遇到了以下的问题,和大家分享一下。
这是API对于此方法的说明:当false时,此WebView的宽度始终是Web页面CSS中控制的宽度,因此要适配屏幕此方法要为true。
API说明:这种加载模式,是缩小内弄以适配屏幕宽度。
所以,WebView适配屏幕的时候要将这2个方法都设置为true
loadUrl (String url) 直接加载一个页面的域名
loadData (String data,String mimeType, String encoding) 加载一段HTML,mimeType="text/html" encoding="utf-8"
loadDataWithBaseURL (String baseUrl,String data, String mimeType, String encoding, String historyUrl) 与上面用法相同
了解了安卓WebView关于宽度适配的相关属性,方法,尝试了获取webView的高度设置,都没有达到满意的效果.
回到正题,为了解决大面积空白的问题,我使用了下面的小技巧勉强达到了想要的效果,只不过代价是放弃了webView的缩放,如果哪位大神有好的解决方案,敬请赐教。
wv.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); wv.setVerticalScrollBarEnabled(false); wv.setVerticalScrollbarOverlay(false); wv.setHorizontalScrollBarEnabled(false); wv.setHorizontalScrollbarOverlay(false);
将webView的横向竖向的scrollBar都禁用掉,将不再与ScrollView冲突,解决了大面积空白的问题。
热心网友 时间:2022-04-14 22:55
Android中WebView用来加载html页面,自带滑动效果。ScrollView同样也是自带滑动效果,在项目中如果需要WebView和一些其他view比如TextView一起滑动的话就必须外面嵌套一层ScrollView,这时问题就来了,嵌套之后ScrollView的滑动和WebView的滑动就会有冲突,WebView的滑动不流畅。下面就是解决方案:
自定义一个ScrollView
public class MyScrollView extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
// Return false if we're scrolling in the x direction
class YScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (Math.abs(distanceY) > Math.abs(distanceX)) {
return true;
}
return false;
}
}
}
上面代码中onInterceptTouchEvent方法是关键,重写这个方法使如果ScrollView有touch事件时不被拦截,这样只要ScrollView有touch事件优先处理,这样就保证了滑动的流畅。
之后就在自己的xml布局文件里用MyScrollView代替ScrollView来布局就ok了。如:
<com.boohee.widgets.MyScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_bg"
android:layout_marginTop="@dimen/default_shadow_margin" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="180dp" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_top_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:id="@+id/dot_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:padding="10dp" >
</LinearLayout>
</RelativeLayout>
<WebView
android:id="@+id/wv_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software"
android:scrollbars="none" />
</LinearLayout>
</com.boohee.widgets.MyScrollView>