私がしようとしているのは、Webビューのフォントサイズとフォアグラウンド/バックグラウンドカラーを変更することです。 私は(アクティビティの内側に配置)は、以下の方法を使用してこれを行っていますスクロール後にWebViewプロパティが変更されない
private void updateFont(int fontSize, String fontColor) {
if (fontSize != 0) {
contentWebview.getSettings().setDefaultFontSize(fontSize);
}
if (!fontColor.equals("")) {
contentWebview.loadUrl(fontColor);
}
}
は今、これが正常に動作しています。しかし、私は(私が作成したカスタムのWebViewである)私のcontentWebviewに何かを追加 - 以下のカスタムのWebViewの一部抜粋です:
public class ContentWebview extends WebView {
public ContentWebview(Context context) {
super(context);
}
public ContentWebview(Context context, AttributeSet attrs) {
super(context, attrs);
loadWebview();
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
setOnTouchListener(gestureListener);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int currentPosition = getScrollX()/displayWidth +1;
scrollTo(currentPosition*displayWidth, 0);
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int currentPosition = getScrollX()/displayWidth;
scrollTo(currentPosition*displayWidth, 0);
}
} catch (Exception e) {
// nothing
}
return true;
}
}
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction()==MotionEvent.ACTION_UP) {
int currentPosition = getScrollX()/displayWidth;
if(getScrollX()%displayWidth>displayWidth/2) {
currentPosition++;
} else {
// do nothing
}
scrollTo(currentPosition*displayWidth, 0);
}
return super.onTouchEvent(ev);
}
基本的に私はそれに固定算出した位置にスナップカスタムのWebViewを作成しましたスクロールまたはフレンドされます。今ここで問題が発生します。この特定のWebviewをスクロールすると、以前のメソッド(updateFont)はもう動作しません.Webviewはフォントサイズや色を変更しません。
私も、この特定の行に問題が絞られている:
setOnTouchListener(gestureListener);
私は、この行をコメントアウトした場合、updateFont
方法は、私はWebViewのをスクロールした後も再び動作しますが、スナップに、ページ上の私のwebviewのfling機能もなくなりました。
私はここで何が欠けていますか?
更新:問題はfroyoデバイスでのみ発生します。ファッションジェスチャ検出器を使用して代わりに - 真のごonFling(..)
方法で偽を返す常にをを試す - 2.3以上はWebViewのとGestureDetectorsといくつかの問題があります問題