2011-08-24 151 views
12

在我的程序中,当点击按钮时,webview按独立布局加载。该布局只有该网页视图。我想为此添加边框。我将以下单独的XML添加到该webview的背景中,但是无效。如何为Android设置边框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回答](http://stackoverflow.com/questions/7074546/border-texture-for-a-view/7074764# 7074764)? –

回答

22

将WebView封装在布局中,将边框添加到布局,并在布局中保留2dp的填充。

+0

感谢它的工作..! – Miuranga

+0

为什么需要填充的具体原因是什么? –

+0

也许有点晚,但填充像对象内部的边距,所以需要填充以防止webview重叠到布局背景 –

4

WebView本身不能有Drawable作为背景 - 请参阅WebView.java中的WebView.onDraw。 它只有纯色,默认或从html内容中获取。 解决方案(如已经建议)将WebView设置为其他Widget的子项。

4

Abhinav的答案是正确的,我只是像我这样的绝对初学者添加这些额外的信息谁遇到这个答案,甚至不知道如何“在一个布局中包围WebView”或“添加边界布局”;希望它可以帮助别人:

  1. /res下创建一个新目录并将其命名为drawable(你已经有drawable-hdpidrawable-mdpi等;这些都是不同的分辨率 - 这个新目录drawable不管将使用解析度)。
  2. drawable下创建一个新的XML文件并将其命名为border.xml(在Android Studio中,您可以右键单击drawable目录并单击新建>可绘制资源文件)。
  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> 
+0

谢谢,这对我很好。另外需要补充的是:你可以在根LinearLayout(第一个)中添加一个android:padding =“5dp”,为屏幕边缘留出一定的空间。 –