Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 31.03.2020
Сообщений: 29

Android Studio как правильно передать WebView

12.12.2024, 18:37. Показов 464. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Ситуация следующая есть web страница, в ней расположены элементы, выглядит вот так

При открытии в браузере и вводе в поле "сообщение" вот так

А при открытии в приложении через WebView и вводе текста вот так


Чего не хватает? Может я что то не передаю, или не получаю?
Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.twod.corpus;
 
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
 
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
 
public class MainActivity extends AppCompatActivity {
 
    private WebView mywebView;
    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        mywebView=(WebView) findViewById(R.id.webview);
        mywebView.requestFocus();
        mywebView.setWebViewClient(new WebViewClient());
        mywebView.setBackgroundColor(0); // Set the background color
        mywebView.loadUrl("ТУТ URL АДРЕСС");
        WebSettings webSettings=mywebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDatabasePath("/data/data/" + mywebView.getContext().getPackageName() + "/databases/");
 
        WebSettings settings = mywebView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDatabaseEnabled(true);
        settings.setDomStorageEnabled(true);
 
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            String databasePath = "/data/data/" + mywebView.getContext().getPackageName() + "/databases/";
            settings.setDatabasePath(databasePath);
        }
 
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
 
    public class mywebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view,url,favicon);
            mywebView.setBackgroundColor(0); // Set the background color
            mywebView.getBackground().setAlpha(0); // Set the fill transparency Range: 0-255
        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            WebView myWebView = (WebView) findViewById(R.id.webview);
            mywebView.setBackgroundColor(0); // Set the background color
            mywebView.getBackground().setAlpha(0); // Set the fill transparency Range: 0-255
            return true;
        }
 
    }
    @Override
    public void onBackPressed() {
        if (mywebView.canGoBack()) {
            mywebView.goBack();
        } else {
            super.onBackPressed();
        }
        mywebView.setBackgroundColor(0); // Set the background color
        mywebView.getBackground().setAlpha(0); // Set the fill transparency Range: 0-255
    }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2024, 18:37
Ответы с готовыми решениями:

Android Studio как элемент WebView сделать прозрачным
Доброго времени суток Уважаемые форумчане. Вопрос следующий, есть проект вешаю WebView которая ссылается на http//// бла бла бла ...

Прозрачный фон WebView в android studio
Помогите пожалуйста! Вот фрагмент кода: web = (WebView) findViewById(R.id.webView); web.setBackgroundColor(Color.TRANSPARENT); ...

Android studio webview кнопка назад
подскажите в чем проблема, не работает кнопка назад в приложении public class Tab1 extends Fragment { public WebView...

2
139 / 123 / 24
Регистрация: 12.12.2020
Сообщений: 1,030
13.12.2024, 00:35
А вниз страницу эту можно прокрутить? Похоже она неправильно высоту окна определяет.
0
2 / 2 / 0
Регистрация: 31.03.2020
Сообщений: 29
13.12.2024, 10:06  [ТС]
На странице 3 контейнера, body где отображаются сообщения, и 2 контейнера это поле ввода и 4 кнопки навигации, прибитые к низу position:fixed (так же пробовал absolute), но результат тот же, прокручивается body когда большое кол-во сообщений

Добавлено через 3 часа 43 минуты
Спасибо всем поисковым система, и сотням вариантам.
Ответ следующий, position:fixed работает в WebView как надо, но окно не понимает открыта клава или нет, и вообще любой другой элемент. Выход следующий, отслеживать открытие клавиатуры, фиксировать ее высоту, передавать через JS параметры, либо запускай JS функцию, для изменения высоты положения контейнера для ввода текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mywebView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
 
                        Rect r = new Rect();
                        mywebView.getWindowVisibleDisplayFrame(r);
                        int screenHeight = mywebView.getRootView().getHeight();
 
                        // получаем высоту клавиатуры в соотношении экрана
                        int keypadHeight = screenHeight - r.bottom;
 
                        Log.d(TAG, "keypadHeight = " + keypadHeight);
 
                        if (keypadHeight > screenHeight * 0.15) { //0,15, возможно, достаточно для определения высотыклавиатуры.
                            // если клавиатура поднята
                            if (!isKeyboardShowing) {
                                isKeyboardShowing = true;
                                mywebView.loadUrl("javascript:blockInput('open'," + keypadHeight +")");// запуск функции js для поднятие поля над клавиатурой
                            }
                        }
                        else {
                            // если клавиатура закрыта
                            if (isKeyboardShowing) {
                                isKeyboardShowing = false;
                                mywebView.loadUrl("javascript:blockInput('close'," + keypadHeight +")"); // запуск функции js для возврата поля на исходное место
                            }
                        }
                    }
                }
        );
Может выглядит как колхоз, но я нашел только это решения имено для WebView
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2024, 10:06
Помогаю со студенческими работами здесь

WebView некорректно загружает url (Android Studio)
android studio. webview некорректно загружает url. Он загружает, но почему отображается некорректное изображение, вместо html-страницы?

Сжатие html и css в webview приложении на android studio
сжатие html и css в webview приложении на android studio возможно ли методами андроид студио сжимать данные?

Как передать переменную с одной Activity в другой Android Studio
Приветствую, Моя задача такая, Работаю в Android Studio 1.4 У меня есть чекбокс (CheckBox) в одном Activity. Нужно когда чекбокс...

Как правильно обновлять Android Studio
Здравствуйте коллеги. При обновлении студии создаются старые копии версий(см. рис.) 1)Можно ли их удалить и помешает ли это работе...

Как правильно пользоваться фрагментами в android studio?
надо перенести один код в другой проект, в одном проекте код описан в activity_main.xml и MainActivity.java, нужно перенести этот код в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »