Для простоты я сделаю вопрос коротким
У меня есть следующий 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>
Как это сделать для локальных изображений?
Я ищу что-то подобное, но я не уверен, как это сделать, мои изображения отображаются отлично, так что в основном вы имеете в виду, что путь к локальному файлу href должен работать? Когда я нажимаю на изображение, ничего не происходит
Вы пробуете src = "file:///path_to_image"
Примеры: src = "file:///storage/emulated/0/Folder/abc.png"
Для меня мне не хватало file: /// перед остальной частью пути, и я не думал об этом, пока не увидел этот пост. Я считаю, что это важный ответ, поскольку я видел несколько Stack Qs по этим линиям, но без этой важной части.
Вы можете использовать действие щелчка в 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");
}
}
can click and open the image: открыть изображение в WebView или в собственном виджете Android, таком как ImageView?