2015-04-26 2 views
0

При тестировании моего веб-приложения в WebView Android 4.4.2 прокрутка не работает ни с одним из элементов. Событие javascript "onscroll" не вызывается.Невозможно прокрутить содержимое в WebView 4.4.2

Тем не менее, с Android 5 и выше работает отлично.

EDIT: Мои элементы, которые не прокручиваются, имеют процентные высоты (т. Е. «Высота: 100%»), но когда я перехожу на пиксель (т. Е. «Высота: 50 пикселей»), прокрутка работает. Поэтому он должен иметь какое-то отношение к тому, как WebView 4.4.2 отображает div.

+0

Является ли ваш веб-просмотр элементом прокрутки? –

+0

Нет, просто RelativeLayout. – radu122

+0

Вам нужны события прокрутки? –

ответ

0

Одним из возможных решений проблемы с прокруткой было бы превратить ваш веб-просмотр в прокрутку. Таким образом, веб-просмотр такой же большой, как и контент, а прокрутка выполняется с помощью прокрутки. Но события прокрутки не будут срабатывать в вашем javascript, вам нужно сделать видимость прокрутки видимой и отправить эти события через интерфейс javascript. Может быть, кто-то предоставит вам лучшую.

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ScrollView; 

public class ObservableScrollView extends ScrollView { 

    public interface OnObservableScrollViewScrolled { 
     public void onObservableScrollViewScrolled(ObservableScrollView sv, int l, int t, int oldl, int oldt); 
    } 

    private OnObservableScrollViewScrolled listener; 

    public ObservableScrollView(Context context) { 
     this(context, null, -1); 
    } 

    public ObservableScrollView(Context context, AttributeSet attrs) { 
     this(context, attrs, -1); 
    } 

    public ObservableScrollView(Context context, AttributeSet attrs, int style) { 
     super(context, attrs, style); 
    } 

    @Override 
    protected void onScrollChanged(int l, int t, int oldl, int oldt) { 
     super.onScrollChanged(l, t, oldl, oldt); 
     // Notify external listener 
     if (listener != null) 
      listener.onObservableScrollViewScrolled(this, l, t, oldl, oldt); 
    } 

    public void setScrollListener(OnObservableScrollViewScrolled callback) { 
     this.listener = callback; 
    } 
} 
Смежные вопросы