如何在 Android 中从布局 XML 设置 WebView 的 URL?

发布于 2024-10-20 16:27:40 字数 283 浏览 2 评论 0原文

我正在尝试从布局 main.xml 设置 WebView 的 URL。

通过代码,这很简单:

WebView webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/index.html");

是否有一种简单的方法可以将此逻辑放入布局 XML 文件中?

I'm trying to set the URL for a WebView from the layout main.xml.

By code, it's simple:

WebView webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/index.html");

Is there a simple way to put this logic into the layout XML file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原来分手还会想你 2024-10-27 16:27:40

您可以按照此处所述声明自定义视图并应用自定义属性。

结果看起来类似于:

在您的布局中

<my.package.CustomWebView
        custom:url="@string/myurl"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>

在您的 attr.xml 中

<resources>
    <declare-styleable name="Custom">
        <attr name="url" format="string" />
    </declare-styleable>
</resources>

最终在您的自定义 Web 视图类中

    public class CustomWebView extends WebView {

        public CustomWebView(Context context, AttributeSet attributeSet) {
            super(context);

            TypedArray attributes = context.getTheme().obtainStyledAttributes(
                    attributeSet,
                    R.styleable.Custom,
                    0, 0);
            try {
                if (!attributes.hasValue(R.styleable.Custom_url)) {
                    throw new RuntimeException("attribute myurl is not defined");
                }

                String url = attributes.getString(R.styleable.Custom_url);
                this.loadUrl(url);
            } finally {
                attributes.recycle();
            }
        }
    }

You can declare your custom view and apply custom attributes as described here.

The result would look similar to this:

in your layout

<my.package.CustomWebView
        custom:url="@string/myurl"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>

in your attr.xml

<resources>
    <declare-styleable name="Custom">
        <attr name="url" format="string" />
    </declare-styleable>
</resources>

finally in your custom web view class

    public class CustomWebView extends WebView {

        public CustomWebView(Context context, AttributeSet attributeSet) {
            super(context);

            TypedArray attributes = context.getTheme().obtainStyledAttributes(
                    attributeSet,
                    R.styleable.Custom,
                    0, 0);
            try {
                if (!attributes.hasValue(R.styleable.Custom_url)) {
                    throw new RuntimeException("attribute myurl is not defined");
                }

                String url = attributes.getString(R.styleable.Custom_url);
                this.loadUrl(url);
            } finally {
                attributes.recycle();
            }
        }
    }
隱形的亼 2024-10-27 16:27:40

使用 Kotlin 和绑定适配器,您可以为 Webview

创建文件 BindingUtils.kt

@BindingAdapter("webViewUrl") <- Attribute name
fun WebView.updateUrl(url: String?) {
    url?.let {
        loadUrl(url)
    }
}

并在 xml 文件中创建一个简单的属性:
应用程序:webViewUrl =“@{@string/licence_url}”

        android:id="@+id/wvLicence"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        **app:webViewUrl="@{@string/licence_url}"**
        tools:context=".LicenceFragment"/>

With Kotlin and binding adapter you can create a simple attribute for the Webview

Create file BindingUtils.kt

@BindingAdapter("webViewUrl") <- Attribute name
fun WebView.updateUrl(url: String?) {
    url?.let {
        loadUrl(url)
    }
}

and in the xml file:
app:webViewUrl="@{@string/licence_url}"

        android:id="@+id/wvLicence"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        **app:webViewUrl="@{@string/licence_url}"**
        tools:context=".LicenceFragment"/>
滥情稳全场 2024-10-27 16:27:40

由于 URL 基本上是一个字符串,因此您可以将其放入 value/strings.xml 文件中

<resources>
    <string name="myurl">http://something</string>
</resources>

,然后可以像这样使用它:

WebView webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl(getString(R.string.myurl));

Since URL is basically a string, you can put it into values/strings.xml file

<resources>
    <string name="myurl">http://something</string>
</resources>

then you can use it like this:

WebView webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl(getString(R.string.myurl));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文