在工作中 我们经常会把后台传回来的数据 用一个webview显示出来。我们需要固定webview的大小的时候,webview 虽然大小被固定了 但是当数据过多的的时候显示不全,依然可以在固定的大小内上下滑动。
但是如何禁止WebView不可滑动呢?WebView有几个与滑动有关的方法都是无效的:
WebView.setScrollContainer(false);
WebView.setVerticalScrollBarEnabled(false);
WebView.setHorizontalScrollBarEnabled(false);
后来发现可以通过重写WebView的scrollTo(intx,inty)方法来禁止滑动:
- public class WebViewMod extends WebView {
- public EditText mFocusDistraction;
- public Context mContext;
- public WebViewMod(Context context) {
- super(context);
- init(context);
- }
- public WebViewMod(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context);
- }
- public WebViewMod(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context);
- }
- @SuppressLint("NewApi")
- public WebViewMod(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
- super(context, attrs, defStyle, privateBrowsing);
- init(context);
- }
- public void init(Context context) {
- // This lets the layout editor display the view.
- if (isInEditMode()) return;
- mContext = context;
- mFocusDistraction = new EditText(context);
- mFocusDistraction.setBackgroundResource(android.R.color.transparent);
- this.addView(mFocusDistraction);
- mFocusDistraction.getLayoutParams().width = 1;
- mFocusDistraction.getLayoutParams().height = 1;
- }
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- invalidate();
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
- @Override
- public boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY,
- int scrollRangeX, int scrollRangeY, int maxOverScrollX,
- int maxOverScrollY, boolean isTouchEvent) {
- return false;
- }
- /**
- * 使WebView不可滚动
- * */
- @Override
- public void scrollTo(int x, int y){
- super.scrollTo(0,0);
- }
- }