Android WebView - открытие локальных образов

Для простоты я сделаю вопрос коротким

У меня есть следующий HTML-код, который я загружаю в свой WebView

<h1>Heading</h1>
<p>some description and imaages <img src = "local file source"/>
</p>

Вышеупомянутое работает отлично и показывает изображения в веб-просмотре, но я хочу сделать свои изображения clickable, чтобы пользователи могли щелкнуть и открыть изображение.

Что меня смущает, мне нужно создать новое действие, чтобы открыть изображение, и как мне обрабатывать щелчок по изображениям в HTML внутри веб-просмотра

В HTML я могу просто поместить изображение в herf

<a href = "http://imagepath">
 <img src = "http://imagepath"/>
</a>

Как это сделать для локальных изображений?

can click and open the image: открыть изображение в WebView или в собственном виджете Android, таком как ImageView?
SushiHangover 14.03.2018 03:59

Я ищу что-то подобное, но я не уверен, как это сделать, мои изображения отображаются отлично, так что в основном вы имеете в виду, что путь к локальному файлу href должен работать? Когда я нажимаю на изображение, ничего не происходит

Ali 14.03.2018 05:57
0
2
179
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы пробуете src = "file:///path_to_image" Примеры: src = "file:///storage/emulated/0/Folder/abc.png"

Для меня мне не хватало file: /// перед остальной частью пути, и я не думал об этом, пока не увидел этот пост. Я считаю, что это важный ответ, поскольку я видел несколько Stack Qs по этим линиям, но без этой важной части.

TheRobQ 17.09.2019 21:36

Вы можете использовать действие щелчка в js как обычно и использовать @JavascriptInterface, чтобы определить мост между вашим js и веб-просмотром, когда изображение щелкнуло, уведомите свою активность, чтобы отобразить изображение так, как вы хотите.

Ответ принят как подходящий

How do I do this for local images?

Загрузите файл Html в Webview, поместите изображение в папку Assets и прочтите этот файл изображения с помощью Html.

Вот мой main.html:

<html>
  <head>

  </head>
  <body>
    <h1>Login Form</h1>
    <img src = "download.jpg" width = "200px" onClick = "Foo.SomeMethod('bla-bla')"></img>
  </body>
</html>

Затем загрузите этот файл Html в Webview:

webView.LoadUrl("file:///android_asset/main.html");

how do I handle click on images in HTML inside the WebView

Вы можете сослаться на:

Вот простая демонстрация:

public class MainActivity: Activity
{  
    class Foo : Java.Lang.Object // do not need Java.Lang.IRunnable 
    {
        Context context;

        public Foo(Context context)
        {
            this.context = context;
        }

        [Export] // !!! do not work without Export
        [JavascriptInterface] // This is also needed in API 17+
        public void SomeMethod(string param)
        {
            Toast.MakeText(context, "This is a Toast from C#!" + param, ToastLength.Short).Show();
        }
    }

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.Main);

        WebView view = FindViewById<WebView>(Resource.Id.web);
        view.Settings.JavaScriptEnabled = true;
        view.AddJavascriptInterface(new Foo(this), "Foo");
        view.LoadUrl("file:///android_asset/main.html");
    }
}

Другие вопросы по теме