4

webview を開いているとします。

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


}

このWebビューの上にListViewを作成したいだけです(それを覆い隠しますが、Webビューを実行できるようにします)。ビューのオンとオフを切り替えることができました。ありがとう。

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>

ここで、View 階層に ListView と WebView の両方を持つ Activity を作成しますが、可視になるのはそのうちの 1 つだけです。

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 とほとんど同じ (およびそれ以上) です。

また、ListViews を表示するために ListActivity を使用する必要はありませんリスト ベースのアクティビティは非常に一般的であるため、リスト ベースのアクティビティを処理するための便利なものを提供するだけです。

あなたが得るエラーは正確には何ですか?

于 2010-02-10T12:57:43.857 に答える