Страница 1 из 2

Вопросы по работе с WebView

Добавлено: 10 апр 2012, 11:55
laandrew
Здравствуйте!

Стал практиковаться с компонентом WebView.

Код:
WebView webView = (WebView) findViewById(R.id.webView);
Uri data = getIntent().getData();
webView.setScrollBarStyle(OVER_SCROLL_NEVER);
webView.setBackgroundColor(0);
webView.setBackgroundResource(R.drawable.fon);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(data.toString());

Установил у webView прозрачный цвет и фон. Запускаю приложение и попадаю на страницу сайта.
Страница сайта сделана так, что ссылки обрабатываются через ajax. При переходе по ссылкам предыдущие запросы с экрана не исчезают, а остаются на месте. Убираю из кода:
webView.setBackgroundColor(0);
webView.setBackgroundResource(R.drawable.fon);
и все в порядке, предыдущий запрос с экрана уходит.

Можете помочь с этим вопросом? Как оставить код и при этом стирать с экрана предыдущий запрос.

Re: Вопросы по работе с WebView

Добавлено: 10 апр 2012, 12:20
laandrew
Я так понимаю, что идет кэширование запроса. Но причем вставляемый фон, не могу понять.

Re: Вопросы по работе с WebView

Добавлено: 10 апр 2012, 19:37
laandrew
Продолжая эксперименты с WebView, пришел с следующей трудности.

Код xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/header_fon2" />
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
</WebView>
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="60dp"
android:maxHeight="60dp"
android:adjustViewBounds="true"
android:src="@drawable/footer_fon" />
</LinearLayout>

Нижний imageView2 не выводится на экран.
Мне нужно чтобы imageView1 и imageView2 выводилсь по высоте, с высотой как идет картинка в фоне. Остальное должен заполнить на экране WebView. WebView заполняет, но не дает выводится imageView2.

Не могу понять в чем проблема. Прошу помощи.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 01:18
andev
Жаль, что вы не приложили к сообщению картинки из drawable, что бы можно было посоветовать точнее, а так неясно, можно ли их деформировать без соблюдения пропорций, или нет.
В вашем коде все логично - верхний ImageView имеет height по содержимому, т.е. умещается в экран. Далее идет WebView с высотой fill_parent, он и "отъедает" всю оставшуюся высоту.

Можно сделать, например, через RelativeLayout

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical">

	<ImageView
		android:id="@+id/imageView1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_alignParentTop="true"
		android:adjustViewBounds="true"
		android:src="@drawable/iv_header_background" />
	
	<WebView
		android:id="@+id/webView"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:layout_above="@+id/imageView2"
		android:layout_below="@+id/imageView1">
	</WebView>
	
	<ImageView
		android:id="@+id/imageView2"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_alignParentBottom="true"
		android:adjustViewBounds="true"
		android:src="@drawable/iv_footer_background" /> 
		
</RelativeLayout>

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 07:45
KamiSempai
WebView нужно задать вес:
android:layout_weight="1"

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 08:21
laandrew
Спасибо! С размещением WebView получилось. Буду дальше изучать.

Искал в Интернете, чтобы работать с кэш, нашел только такой код:

WebSettings webSettings = webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setAppCacheEnabled(false);
webView.clearCache(true);

Пробовал, но результата нет. Предыдущий запрос так и остается на экране.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 08:59
KamiSempai
Мне кажется причина в методе onDraw класса WebView.
Что будет, если страница сайта не помещается на весь экран, нормально ли отрабатывает скрол?

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 09:09
laandrew
Скрол отрабатывает нормально.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 09:31
KamiSempai
Я тут кое что выяснил, это распространенная проблема при использовании JavaScript. Если скрипты отключить, все будет хорошо.
Попробую вечером посмотреть, что с этим делать.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 17:45
KamiSempai
Не могу найти сайт со скриптами и прозрачным фоном. Адресочек не подскажете? :)

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 20:29
laandrew
Нет, не могу подсказать.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 21:36
KamiSempai
Тогда ни чем помочь не могу. Не смог воспроизвести ошибку, у меня все работает правильно.

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 22:46
laandrew
Можете прислать код, на котором вы делали проверку и все работало?

Re: Вопросы по работе с WebView

Добавлено: 11 апр 2012, 22:48
laandrew
Подключите, пожалуйста, к своему коду вот этт адрес: http://pinotnoir.9094370442.ru/
Работает нормально или как у меня?
Если нормально, пришлите свой код.

Re: Вопросы по работе с WebView

Добавлено: 12 апр 2012, 21:50
KamiSempai
Тоже не затирается предыдущая страница. Пробовал по эксперентировать с переопределением методов. Получил забавные результаты, но от отображения предыдущей страници не избавился. Пока лазил по интернету наткнулся на фразу одного юзера, что ему помогло использование Handler. Надо бы попробовать, но сегодня я это проверить уже не успею.

Re: Вопросы по работе с WebView

Добавлено: 16 апр 2012, 19:56
laandrew
Здравствуйте! Использование Handler не пробовали?

Re: Вопросы по работе с WebView

Добавлено: 16 апр 2012, 20:55
KamiSempai
Я не понял, что он имел ввиду и какое отношение к этому имеет Handler. Честно говоря зашел в тупик.
Есть примеры где создается класс Handler наследуемый от BrowserCallbackAdapter, но это совсем не наш случай.

Все таки я бы посоветовал искать пути обхода. Например, установить фон который должен быть за прозрачным WebView.

Re: Вопросы по работе с WebView

Добавлено: 26 апр 2012, 14:12
laandrew
Хочу сделать с 4-х сторон окружить WebView компонентами ImageView.
Все четыре ImageView имеют свои размеры. А WebView должен будет заполнить собой оставшуюся область.

Делаю так, как на коде, но не получается.

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:src="@drawable/iv_header_background" /> 
         <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:src="@drawable/iv_left_background" /> 
        <WebView
                android:id="@+id/webView"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_above="@+id/imageView2"
                android:layout_below="@+id/imageView1"
                android:layout_toLeftOf="@+id/imageView3"
                android:layout_toRightOf="@+id/imageView4">
        </WebView>
        <ImageView
                android:id="@+id/imageView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:src="@drawable/iv_right_background" /> 
        <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:adjustViewBounds="true"
                android:src="@drawable/iv_footer_background" /> 
</RelativeLayout>
Но код не работает. Прошу помощи.

Re: Вопросы по работе с WebView

Добавлено: 26 апр 2012, 14:26
andev
залейте куда-нить ваши 4 картинки

Re: Вопросы по работе с WebView

Добавлено: 26 апр 2012, 15:04
laandrew
Картинки в архиве по адресу: http://ifolder.ru/30153437

header_fon.png -верх
footer_fon.png - низ
left_fon.png - лево
right_fon.png - право
vinnaya_karta_fon2.png - фон для WebView

Спасибо!