4

Suppose I have a webview open:

  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);    


}

I simply want to create a ListView above this webview (covering it up...but sitll allowing the webview to run). I could toggle the views on and off. Thanks.

4

2 回答 2

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>

现在,我创建了一个 Activity,它将在其视图层次结构中同时具有 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);
    }

}

注意:代码可能不完整,但我希望它确实向您传达了我的观点。

于 2010-02-10T11:09:52.747 回答
1

是的,如果您想以编程方式打开 (View.VISIBLE) 和关闭 (VIEW.GONE) 视图,setVisibility 可能会对您有所帮助。

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

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

你得到的错误到底是什么?

于 2010-02-10T12:57:43.857 回答