Android加载存储在webview中的assets文件夹中的html页面

时间:2011-06-21 10:49:40

标签: android webview

我的应用必须显示存储在assets文件夹中的5个HTML页面,以及如何在单个webview中显示它们。

5 个答案:

答案 0 :(得分:11)

WebView webView = (WebView) findViewById(R.id.YourWebView);
webView.loadUrl("file:///android_asset/your.html");

答案 1 :(得分:3)

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

然后用导航湖创建html页面:

    <body>

<ul id="menu">
    <li><a href="page1.html" title="page 1">Page 1</a></li>
    <li><a href="page2.html" title="page 2">Page 2</a></li>
    <li><a href="page3.html" title="page 3">Page 3</a></li>
    <li><a href="page4.html" title="page 4">Page 4</a></li>
    <li><a href="page5.html" title="page 5">Page 5</a></li>
</ul>


<h1> page 1</h1>
</body>

然后加载第一页:

WebView webView = (WebView) findViewById(R.id.testWebView); 
 webView.loadUrl("file:///android_asset/page1.html");

所以你得到一个带有导航到其他页面的html页面

答案 2 :(得分:2)

我找到了这个,并且献给了斯特凡·哈尔恩先生(了解我的问题)

`

private WebView mWebView = null;    
    private TextView selectedText = null;   
    private long timeLeft;
    private int pageIndex;
    private String pagePath;    
    private String[] pageList;  
    private AssetManager assMan =null;    
    private String path="Courses/Section01";  
    private int SelectedRow;
       @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 

            setContentView(R.layout.course);

            mWebView = (WebView) findViewById(R.id.webview);

            assMan= this.getAssets();

             try {
                pageList = aMan.list(path);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             pageIndex=0;

             System.out.println(pageList[0]);

             System.out.println(pageList.length);

             pagePath=pageList[pageIndex];

            loadWebView(pagePath);

            Button nextView = (Button) findViewById(R.id.nxt); 

                       nextView.setOnClickListener(NextClick);


        Button   previousView = (Button) findViewById(R.id.pre);  
                       previousView.setOnClickListener(PreviousClick);
       }

       View.OnClickListener PreviousClick = new View.OnClickListener() {

            public void onClick(View v) {
                GoPrevious();

            }
        };
         View.OnClickListener NextClick = new View.OnClickListener() {

                public void onClick(View v) {
                    GoNextNews();

                }
            };
       private void loadWebView(String s){

            //mWebView.loadUrl(s);

            mWebView.loadUrl("file:///android_asset/htmlFilesFolder/"+s);

        }


        private void GoNextNews() {

            int TotalRows = pageList.length;

            if ((SelectedRow + 1) < TotalRows) 
            {
                SelectedRow = SelectedRow + 1;

                String s=pageList[SelectedRow];

                loadWebView(s);
                }
        } 

        private void GoPrevious() {

            if (SelectedRow > 0) 
            {
                SelectedRow = SelectedRow - 1;

                String s=pageList[SelectedRow];

                loadWebView(s);

            }
        } 
}`

答案 3 :(得分:1)

如果我没错,你实际上是在谈论SPA(单页应用程序)。你应该看一下Angularjs,它是一个具有proparty routeProvider的框架。你可以轻松加载你的html页面,这些页面实际上是你的主html页面中的部分内容。只需花一些时间在滚滚链接上......哦......如果你在你的项目上添加phonegap,它也适用于android和ios。

http://docs.angularjs.org/tutorial/step_07

http://docs.angularjs.org/tutorial

乐于帮助......

答案 4 :(得分:0)

我建议您先将html文件从Assets复制到Internal Directory(getFilesDir())。然后执行

webView.loadUrl( “文件://” + getFilesDir()+ “/firstPage.html”);

因为直接来自Assets,某些设备无法使用。