如何为安卓WebView设置边框

16
在我的程序中,当点击按钮时,Webview在单独的布局中加载。那个布局只有这个Webview。我想为它添加边框。我添加了以下单独的XML文件作为该Webview的背景,但没有起作用。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="10dp" android:color="#000000" />
<padding android:left="2dp" android:top="2dp" android:right="2dp"android:bottom="2dp"/>
</shape>

我该如何在Android的webview中添加边框..? 谢谢


1
可以参考这个SO Answer吗? - Adil Soomro
3个回答

26

将WebView置于Layout中,向Layout添加边框,并在Layout上保留2dp的padding。


为什么需要填充? - Jegan Kunniya
1
也许有点晚了,但是填充就像对象内部的边距一样,因此需要填充来防止 Webview 与布局背景重叠。 - Gabriel Esteban

6

Abhinav的答案是正确的,我只是为像我这样的绝对初学者添加了一些额外的信息,他们遇到这个答案甚至还不知道如何“将WebView包含在布局中”或“向布局添加边框”,希望它能帮助到某些人:

  1. /res下创建一个新目录,并将其命名为drawable(您已经有了drawable-hdpidrawable-mdpi等;这些用于不同的分辨率--这个新目录drawable将在不考虑分辨率的情况下使用)。
  2. drawable下创建一个新的XML文件,并将其命名为border.xml(在Android Studio中,您可以右键单击drawable目录,然后单击New>Drawable Resource File)。
  3. 将miuranga的整个XML粘贴到border.xml中并保存。这称为“可绘制资源”,将在下一步中被拉入您的布局文件中。
  4. 在您的布局文件中,创建一个新的布局,围绕WebView,就像我所做的那样,如下所示的子LinearLayout。请注意,LinearLayout使用属性android:background检索可绘制资源,该属性设置为@drawable/border。我认为它通过其文件名减去扩展名来检索border.xml。通过向包含WebView的布局添加边框,您可以实现可视化地围绕Webview的边框,这很好用。

activity_main.xml内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="com.example.test.app.MainActivity"
   android:orientation="vertical">
<LinearLayout android:background="@drawable/border"
                  android:layout_width="match_parent"
                  android:layout_height="380px">
    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
                        android:id="@+id/webview"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
     </LinearLayout>
</LinearLayout>

谢谢,这对我非常有帮助。还有一件事要补充:您可以在根LinearLayout(第一个)中添加android:padding="5dp",以使边框与屏幕边缘保持一定距离。 - J. Schei

4

WebView本身无法拥有Drawable作为背景 - 请查看WebView.java中的WebView.onDraw方法。它仅具有纯色背景,可以是默认值或从HTML内容中获取。解决方案是(如先前建议的那样)将WebView作为其他小部件的子项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接