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

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 10 апр 2012, 11:55

Здравствуйте!

Стал практиковаться с компонентом 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);
и все в порядке, предыдущий запрос с экрана уходит.

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

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 10 апр 2012, 12:20

Я так понимаю, что идет кэширование запроса. Но причем вставляемый фон, не могу понять.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 10 апр 2012, 19:37

Продолжая эксперименты с 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.

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

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

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

Сообщение andev » 11 апр 2012, 01:18

Жаль, что вы не приложили к сообщению картинки из 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>

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 апр 2012, 07:45

WebView нужно задать вес:
android:layout_weight="1"
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 11 апр 2012, 08:21

Спасибо! С размещением WebView получилось. Буду дальше изучать.

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

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

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

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 апр 2012, 08:59

Мне кажется причина в методе onDraw класса WebView.
Что будет, если страница сайта не помещается на весь экран, нормально ли отрабатывает скрол?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 11 апр 2012, 09:09

Скрол отрабатывает нормально.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 апр 2012, 09:31

Я тут кое что выяснил, это распространенная проблема при использовании JavaScript. Если скрипты отключить, все будет хорошо.
Попробую вечером посмотреть, что с этим делать.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 апр 2012, 17:45

Не могу найти сайт со скриптами и прозрачным фоном. Адресочек не подскажете? :)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 11 апр 2012, 20:29

Нет, не могу подсказать.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 апр 2012, 21:36

Тогда ни чем помочь не могу. Не смог воспроизвести ошибку, у меня все работает правильно.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 11 апр 2012, 22:46

Можете прислать код, на котором вы делали проверку и все работало?

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 11 апр 2012, 22:48

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

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 12 апр 2012, 21:50

Тоже не затирается предыдущая страница. Пробовал по эксперентировать с переопределением методов. Получил забавные результаты, но от отображения предыдущей страници не избавился. Пока лазил по интернету наткнулся на фразу одного юзера, что ему помогло использование Handler. Надо бы попробовать, но сегодня я это проверить уже не успею.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 16 апр 2012, 19:56

Здравствуйте! Использование Handler не пробовали?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 16 апр 2012, 20:55

Я не понял, что он имел ввиду и какое отношение к этому имеет Handler. Честно говоря зашел в тупик.
Есть примеры где создается класс Handler наследуемый от BrowserCallbackAdapter, но это совсем не наш случай.

Все таки я бы посоветовал искать пути обхода. Например, установить фон который должен быть за прозрачным WebView.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 26 апр 2012, 14:12

Хочу сделать с 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>
Но код не работает. Прошу помощи.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

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

Сообщение andev » 26 апр 2012, 14:26

залейте куда-нить ваши 4 картинки

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

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

Сообщение laandrew » 26 апр 2012, 15:04

Картинки в архиве по адресу: http://ifolder.ru/30153437

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

Спасибо!

Ответить