我正在尝试在listview中实现webview。但无法弄明白。
对不起基本问题。这是我的代码到目前为止的样子。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.listView2);
ListAdapter adapter = new ListAdapter(this);
lv.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是我的xml部分:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<ListView
android:layout_height="fill_parent"
android:id="@+id/listView2"
android:layout_width="fill_parent"/>
</LinearLayout>
答案 0 :(得分:3)
正如@Kevin所解释的那样,Webview可能是所有Android平台中最重量级的组件,这与人们通常对listview行组件的期望完全相反:轻量级和快速,平滑的秘密列表显示。
尝试另类设计。通常,我真的不鼓励人们制作混合应用程序,但我不想参加宗教战争。但是如果你真的想要一个webview,为什么不把你的列表放在你想要显示的html页面中。已经有一个webview实例以正确的方式运行,并且在所有Android设备和版本上都表现良好可能具有挑战性。这比其他方式容易得多。
答案 1 :(得分:1)
将webview置于线性布局或类似内容中,初始化时具有固定大小。然后如果你想,你可以稍后弄清楚内容的大小并调整webview的大小。
作为2016年的州。使用chrome webview组件,他们可以正常工作,几个应用就可以做到这一点。
你只需要妥善照顾它们。设置状态和内容以及所有这些,并正确调整它们的大小。
当有可能并且更可取时,“只是不这样做”并不是一个好的答案。具有多线程渲染等“缺点”的webview组件提供了几个android样式视图的优点,比如css,并且可能从服务器加载它,允许样式更改而无需重新部署。也作为专业提示,不要从网络加载,只是直接从内存缓存将数据转储到webview。您还可以在列表中上/下预加载几个Web视图 - 或者在渲染后缓存为位图,如果它只是用于显示。
如果您可以在网页视图中禁用javascript,那就更好了。