【问题标题】:Borders' size in WebView are rendered differentlyWebView 中边框的大小呈现不同
【发布时间】:2013-01-19 03:27:45
【问题描述】:

我有一个正在使用 WebView 查看的移动网页,但由于某种原因,它以不同的方式呈现边框 - 1px 或 2px 厚。有人经历过吗?

所以下面的示例图片显示了一个具有 1px 顶部和 1px 底部边框的 div 是如何以 1px 顶部和 2px 底部呈现的。其他地方也出现这个问题,让设计看起来很廉价……

有什么建议吗?

一些代码

活动

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        deleteDatabase("webview.db");
        deleteDatabase("webviewCache.db");
        WebView mywebview = (WebView) findViewById(R.id.webview);

         mywebview.loadUrl("http://example.mobi/");
         WebSettings webSettings = mywebview.getSettings();
         webSettings.setJavaScriptEnabled(true);
         //webSettings.setBuiltInZoomControls(true);
         mywebview.setWebViewClient(new WebViewClient());

    }

}

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <WebView android:id="@+id/webview" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent"
         />

</RelativeLayout>

HTML

...
 <meta name="viewport" content="target-densitydpi=device-dpi; width=device-width; initial-scale=1; minimum-scale=1; maximum-scale=1; user-scalable=0;">
<div id="mobilesStatusSubmit">
   post status
</div>
....

CSS

div#mobilesStatusSubmit{
width: 100%;
height: 30px;
padding-top:10px;
font-size: 16px;
font-weight: bold;
color: #2684b0;
text-align: center;
background: white;
display: block;
border-top: 1px solid #bbbbbb;
border-bottom: 1px solid #bbbbbb;

}

电话

银河 S2

【问题讨论】:

  • 附上你得到的屏幕和你的要求
  • 图片来自我正在通过 WebView 查看的网页。它是用 html/css 设计的,在普通浏览器上,两个边框看起来都很好 1px 厚,但在 WebView 中查看它会显示一些边框更厚。我检查了我的 html 元标记,它应该是正确的target-densitydpi=device-dpi; width=device-width; initial-scale=1; minimum-scale=1; maximum-scale=1; user-scalable=0;
  • 在浏览器和移动 webview 中的页面可能相同,但您的完整代码将附有细微差别。我会尽力帮助您或网站本身
  • 我已将代码添加到问题中,以便更清楚。
  • 我在 Galaxy S2 上查看应用程序

标签: android webview android-webview


【解决方案1】:

我已经找到了解决这个问题的方法,并且在下面的教程中有很好的解释。

显然屏幕密度会影响边框,因为我的 Galaxy S2 的像素密度约为 1.5 像素,因此在某些边框中 1px 变为 2(可能有一半时间)

https://web.archive.org/web/20120703185504/http://bradbirdsall.com/mobile-web-in-high-resolution

希望这对其他人有所帮助。

【讨论】:

  • 这个解决方案在 css 中没有边框,并使用 box-shadow 属性创建边框。无论如何,这有效并立即给出了解决方案。 +1
  • "404 我们找不到这个页面。"您能否解释或添加一些代码示例@Ando?提前致谢。
【解决方案2】:

你试过了吗……

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        deleteDatabase("webview.db");
        deleteDatabase("webviewCache.db");
        WebView mywebview = (WebView) findViewById(R.id.webview);
       mywebview .setKeepScreenOn(true);
            mywebview .getSettings().setJavaScriptEnabled(true);
             mywebview .getSettings().setDomStorageEnabled(true);
             mywebview .getSettings().setBuiltInZoomControls(true);
             mywebview .setInitialScale(100);
            mywebview .getSettings().setUseWideViewPort(true);
             mywebview .setWebViewClient(new MyWebViewClient());
              mywebview .setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            mywebview.loadUrl("http://example.mobi/");
           WebSettings webSettings = mywebview.getSettings();
           webSettings.setJavaScriptEnabled(true);
         //webSettings.setBuiltInZoomControls(true);
         mywebview.setWebViewClient(new WebViewClient());

    }

【讨论】:

  • Janmejoy,我把这段代码放在哪里?我对其进行了一些更改,因为它给了我错误.. WebView web = (WebView) findViewById(R.id.webview); 。说实话,我不太了解这种语言。我只想制作我的网站的快速版本。你能解释一下我必须把它放在哪里的代码吗?到目前为止,我试图把它放在mywebview.loadUrl 之前和之后,但什么也没发生。感谢您在这方面帮助我。
  • 感谢我必须将 mywebview .setWebViewClient(new MyWebViewClient()); 更改为 mywebview .setWebViewClient(new WebViewClient()); 才能使其正常工作,但页面看起来相同。 :( 上边框还是比较粗的。
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 2011-01-01
  • 2017-05-02
  • 1970-01-01
  • 2020-08-04
  • 2012-10-10
  • 2015-11-18
  • 2015-01-27
相关资源
最近更新 更多