Как отобразить 2 просмотра в 1 занятии (android)? - PullRequest
4 голосов
/ 10 февраля 2010

Предположим, у меня открыта веб-версия:

  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 над этим веб-представлением (прикрывая его ... но все же позволяя веб-представлению работать). Я мог бы включать и выключать взгляды. Спасибо.

Ответы [ 2 ]

5 голосов
/ 10 февраля 2010

Вы можете использовать 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 в своей иерархии View, но только один из них будет Visible:

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

}

Примечание: Код может быть не полным, но я надеюсь, что он донесет до вас мою точку зрения.

1 голос
/ 10 февраля 2010

Да, setVisibility, вероятно, поможет вам, если вы хотите программно включать и отключать режимы просмотра (View.VISIBLE) (VIEW.GONE).

Относительно вашего комментария к ответу Samuhs: В Java у вас нет множественного наследования. Но ListActivity наследует от Activity, поэтому ListActivity во многом совпадает (и даже больше) с Activity.

Кроме того, у вас нет для использования ListActivity для отображения ListViews, он просто предоставляет некоторые удобные вещи для обработки действий на основе списка, поскольку они очень распространены.

Какую именно ошибку вы получаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...