веб-просмотр заставляет мой прокрутку вниз

У меня есть веб-просмотр в прокрутке, когда активность загружается, она заставляет мой прокрутку внизу (где находится веб-просмотр), как только веб-просмотр завершает «loadData». Как мне не допустить этого? Я пробовал это, но экран прыгает вверх и вниз, чего я не хочу:

ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll);  
scroll.post(new Runnable()   
{  
    @Override  
    public void run()   
    {  
       ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll);  
       scroll.fullScroll(ScrollView.FOCUS_UP);  
    }  
});  

person steve    schedule 30.12.2010    source источник
comment
Вы не должны помещать веб-просмотр в прокрутку. Прокручиваемые представления внутри прокручиваемых представлений не работают.   -  person Falmarri    schedule 31.12.2010
comment
хорошо, так как мне это сделать, если содержимое Activity больше, чем экран?   -  person steve    schedule 31.12.2010
comment
... а разве это не то, что делает admob? Кажется, что веб-просмотр получает фокус после загрузки содержимого, что приводит к скачку прокрутки.   -  person steve    schedule 31.12.2010
comment
@steve: как мне это сделать, если содержимое Activity больше экрана? -- вы можете использовать ScrollView, просто оставьте WebView за его пределами. Выделите, скажем, 2/3 экрана под WebView, а остальные под ScrollView или что-то в этом роде.   -  person CommonsWare    schedule 31.12.2010
comment
@CommonsWare - спасибо, это имеет смысл. Думаю, мне придется поместить это в другое действие, оно слишком велико.   -  person steve    schedule 31.12.2010
comment
Разве это не нежелательно? Что, если я хочу, чтобы WebView располагался внизу ScrollView, чтобы после полной прокрутки пользователем WebView можно было увидеть, но только тогда?   -  person powerj1984    schedule 06.05.2011


Ответы (4)


Ответ fhucho подходит для остановки прокрутки веб-просмотра вниз. Но вы потеряете всю доступность с трекболом и т. д. Итак, я нашел улучшение:

public class MyScrollView extends ScrollView {

    @Override 
    public void requestChildFocus(View child, View focused) { 
        if (focused instanceof WebView ) 
           return;
    super.requestChildFocus(child, focused);
    }
}

Надеюсь, поможет !

person Sylphe    schedule 29.05.2012
comment
К сожалению, это не позволяет клавиатуре отображаться при нажатии на поля ввода в веб-просмотре. - person spatialist; 22.10.2015

Создайте собственный ScrollView с помощью этого метода:

@Override
public void requestChildFocus(View child, View focused) {
    if (child instanceof WebView) return;
}
person fhucho    schedule 29.02.2012

Для проблем, связанных с фокусом, я обнаружил, что это работает лучше, добавляя их в ваш WebView в XML:

    android:focusable="false"
    android:focusableInTouchMode="false"

Хотя для фактического заданного вопроса простое добавление другого представления, которое получает фокус по умолчанию, вместо WebView, должно было решить эту проблему. Я думаю, что другие, такие как я, могут обнаружить это при попытке решить другие общие проблемы с WebView внутри ScrollView, находящегося в центре внимания. Добавление вышеуказанного в XML не останавливает работу гиперссылок в WebView.

person eselk    schedule 24.06.2015

добавьте это в свой основной макет

Android:descendantFocusability="blocksDescendants"

person Iti Agrawal    schedule 29.10.2015
comment
Это помогает. Но лучше добавить это только к родителю WebView. - person Sira Lam; 19.07.2018