Como fazer uma WebView E ListView no mesmo Atividade onCreate ()?
-
19-09-2019 - |
Pergunta
public class hello extends Activity, ListActivity {
WebView main_webv;
ListView main_listv;
public static final int REFRESHLIST_ID = Menu.FIRST;
private Handler mHandler = new Handler();
private static final String SPLASH = "http://";
private static final String LIST_NAMES = "http://";
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
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);
}
Como você pode ver, eu primeiro criar uma webview. Então, eu quero que desaparecem imediatamente. Então, eu quero o Listview para subir. Mas o problema é, eu não posso fazer Listview se eu não fizer ListActivity ... mas então eu não posso fazer Atividade ...
Solução
Você pode dar uma olhada no código eu postei em sua outra thread (possivelmente relacionado): aqui . Vou copiar mesmo código abaixo: Este é o meu XML layout (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>
Agora, eu criar uma atividade que terá tanto ListView e WebView na sua opinião hierarquia, mas apenas um deles seria visível:
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);
}
}
Outras dicas
Você pode certamente fazer um ListView
sem ListActivity
. Você também pode usar um WebView
com um ListActivity
.
// main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout android:id="@+id/lister"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_alignParentTop="true">
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
<RelativeLayout android:id="@+id/webviewer"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_below="@+id/lister">
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
// arquivo java
package list.View;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//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("www.google.com");
webView.loadDataWithBaseURL("file:///android_asset/", "<img src=\"banner5.png\" height=\"98%\" width=\"100%\"/>", "text/html", "utf-8", null);
}
}