2010-02-10 94 views
4

假设我有打开网页视图:如何在1个活动(android)中显示2个视图?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    main_webv = (WebView) findViewById(R.id.mainwebview); 
    main_webv.setWebViewClient(new HelloWebViewClient()); 
    main_webv.getSettings().setJavaScriptEnabled(true); 
    main_webv.getSettings().setSupportZoom(false); 
    main_webv.addJavascriptInterface(new HelloJavascriptInterface(),"hello"); 
    main_webv.setWebChromeClient(new HelloWebChromeClient()); 
    main_webv.loadUrl(SPLASH); 
    main_webv.setVisibility(4); 

    setContentView(R.layout.main_list);   
    main_listv = (ListView) findViewById(R.id.mainlistview);  


} 

我只是想创造这个网页视图之上的ListView(覆盖起来......但罗纳尔多,也很想让web视图运行)。我可以打开和关闭视图。 谢谢。

回答

5

您可以使用FrameLayout;这样两个视图将被安排在另一个之上。然后您可以使用View.setVisibility(..)方法切换其可见性。

[编辑:添加的代码]

这是我的布局XML(weblister.xml):

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <ListView 
    android:id="@+id/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 
    <WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</FrameLayout> 

现在,我创建将在其同时查看ListView和的WebView的活动层次结构,但其中只有一个是可见:

public class WebAct extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.weblister); 

      //setup listview 
     ListView listView = (ListView) findViewById(R.id.list_view); 
     listView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, 
       new String[]{"One","Two"}){ 

     }); 
      // setup web view 
     WebView webView = (WebView) findViewById(R.id.webview); 

     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setSupportZoom(false); 

     webView.loadUrl("http://www.google.com"); 

      // set visibility  
     listView.setVisibility(View.INVISIBLE); 
     webView.setVisibility(View.VISIBLE); 
    } 

} 

注:该代码可能尽快完成,但我希望它能向你传达我的观点。

+0

ListActivity怎么样?现在,我的课程扩展了Activity(为我的webview)。但我无法扩展两者。 – TIMEX 2010-02-10 11:22:14

+0

ListActivity扩展活动。所以你的类可以扩展ListActivity,并且还有一个WebView。你只需要在android:name =“@android:id/list”的布局文件中使用ListView(如果你选择扩展ListActivity的话)。 另外,对于您的信息,不需要扩展ListActivity,您可以让您的类扩展Activity,并在您的布局文件中同时包含ListView和WebView。 – Samuh 2010-02-11 12:12:05

+0

我会看看我是否可以为你找到一些代码...只是为了让事情更清晰 – Samuh 2010-02-11 12:34:13

1

是的,如果您想以编程方式在(View.VISIBLE)和关闭(VIEW.GONE)上切换视图,setVisibility可能会帮助您。

关于您对Samuhs的评论回答:在Java中,您没有多重继承。但ListActivity继承自Activity,因此ListActivity与Activity几乎相同(也更多)。

此外,您不要使用ListActivity来显示ListViews,它只是提供了一些便利的东西来处理基于列表的活动,因为它们很常见。

你得到的错误究竟是什么?

+0

+1为了自由地回答OP的问题 – Samuh 2010-02-11 12:41:30

相关问题