Android – скрытие заголовка после загрузки WebView

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

Код, который я использую, такой же, как ответ, на который я ссылался, но я также включил его ниже. Я могу подтвердить, что вызывается метод onProgressChanged, и о прогрессе сообщается как 100, когда страница завершает загрузку, но setProgressBarIndeterminateVisibility(false) и setProgressBarVisibility(false), похоже, ничего не делают. Я использую requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) и requestWindowFeature(Window.FEATURE_PROGRESS) перед отправкой контента.

Я тестировал это на Android 2.3 и 4.1, и результат одинаков для обоих, заголовок не скрыт.

mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                setProgress(progress * 100);
                if(progress == 100) {
                    setProgressBarIndeterminateVisibility(false);
                    setProgressBarVisibility(false);
                }
            }
});

person Luke    schedule 05.07.2012    source источник
comment
для веб-просмотра вы должны использовать requestWindowFeature() перед настройкой его содержимого, если вы установите содержимое до, а затем используете requestWindowFeature(), это вызовет ошибку времени выполнения   -  person Chintan Raghwani    schedule 05.07.2012
comment
Цитата из моего вопроса: я использую requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS) и requestWindowFeature (Window.FEATURE_PROGRESS) перед отправкой контента.   -  person Luke    schedule 05.07.2012
comment
Я указываю на ответ заголовка вашего вопроса о скрытии заголовка   -  person Chintan Raghwani    schedule 05.07.2012
comment
не уверен, к чему ты клонишь...   -  person Luke    schedule 05.07.2012


Ответы (3)


Старая строка заголовка несколько ограничена по функциональности. Вам, вероятно, придется создать свою собственную строку заголовка в макете активности и показать/скрыть ее самостоятельно с помощью setVisibility().

Если вы используете ActionBar вместо старой строки заголовка (которая то, что люди должны делать в любом случае), у него есть методы show() и hide(), которые вы можете использовать, чтобы делать то, что вы хотите.

person Karakuri    schedule 05.07.2012
comment
Я надеялся, что смогу использовать TitleBar, но, думаю, я просто создам свой собственный. Спасибо. - person Luke; 05.07.2012
comment
Вместо этого я настоятельно рекомендую панель действий, если у вас нет веских причин не использовать ее. - person Karakuri; 05.07.2012
comment
Большинство устройств будут до версии 3.0, и для чего-то настолько простого я не считаю целесообразным использовать что-то вроде ActionBarSherlock. - person Luke; 05.07.2012
comment
А через год, когда большинство устройств будут 3.0+? Я по-прежнему считаю, что использование ActionBar лучше, а ActionBarSherlock на самом деле совсем несложно использовать. Создание пользовательской строки заголовка с теми же функциями и написание для нее собственных вспомогательных методов — непростая задача. Я должен это сделать, потому что наши дизайнеры придумали то, что мы не можем воспроизвести с помощью родной панели действий, но если у вас нет таких ограничений, я настоятельно рекомендую использовать ее. - person Karakuri; 05.07.2012
comment
Я согласен, и я бы предпочел разрабатывать только для 4.1, но он будет работать только на принадлежащих нам устройствах, которые никогда не увидят более 2.3. В итоге получилось всего несколько строк, чтобы сделать свои собственные, мне нужно было иметь дело только с onProgressChanged. Он также занимает гораздо меньше места на экране всего за 3dip. - person Luke; 05.07.2012

Я создал веб-браузер для Android, ориентированный на Android 2.3, и столкнулся с той же проблемой. Решение состоит в том, чтобы добавить эту строку кода где-нибудь в вашу основную деятельность.

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

убедитесь, что вы поместили эту строку перед методом setContentView(), иначе ваше приложение будет принудительно закрыто.

person user1499477    schedule 05.07.2012
comment
Использование Window.FEATURE_NO_TITLE, кажется, всегда скрывает заголовок, я надеюсь скрыть его после завершения загрузки страницы, но сделать его видимым при загрузке страницы, чтобы пользователь мог видеть ход загрузки страницы. - person Luke; 05.07.2012

public void onProgressChanged (представление WebView, int progress) { if(progress‹100 && pb.getVisibility()==pb.Invisible) { pb.setvisibility(pb.Visible)}

 pb.setProgress(progress);
if(progress==100)
{
      pb.setVisibility(ProgressBar.INVISIBLE);
}

* где pb = (ProgressBar) findViewById (R.Id.progressbar); он работает правильно для меня, надеюсь, вы поняли мой код простым и приятным.....

person user2861057    schedule 24.10.2013