RecyclerView里面套用webview 显示不全
需求就是做一个专题活动页 ,专题活动页上半部分是html页面,下半部分是商品列表,如果是你你会怎么做呢:
- gridview加头部
- RecyclerView按类型显示不同的item
这两者我感觉都会出现问题就是webview是有滚动条的放在头部或者当成item真的合适吗?由于项目中用的RecyclerView那就以它为例吧,gridview的自行研究,用了recyleview之后,webview部分是wrap_content,因为我们不知道html5内容有多少哈,其他的该怎么来还是怎么来,结果问题出现了,滑不动,RecyclerView滑动不了这可急死我了,即使我把webview弄得不能滚动它也动不了,解决方法如下(下面的是我写的demo,代码不是针对需求的,主要是解决滑不动的问题的,至于是哪个layoutmanager自己按自己的需求来):
package com.dundunwen.testforwebviewinlistview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
RecyclerView rv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv = (RecyclerView) findViewById(R.id.rv);
MyAdapter adapter = new MyAdapter();
LinearLayoutManager llm = new LinearLayoutManager(this);
rv.setAdapter(adapter);
rv.setLayoutManager(llm);
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if(viewType == 1 ){
WebView mView = new WebView(parent.getContext());
mView.setLayoutParams(lp);
return new MyViewHolder(mView);
}else{
TextView mView = new TextView(parent.getContext());
mView.setLayoutParams(lp);
mView.setText("aaaaaaaa");
return new MyViewHolder(mView);
}
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
}
@Override
public int getItemViewType(int position) {
if(position == 0){
return 1;
}else{
return 2;
}
}
@Override
public int getItemCount() {
return 66;
}
class MyViewHolder extends RecyclerView.ViewHolder{
WebView mView;
public MyViewHolder(View itemView) {
super(itemView);
if(itemView instanceof WebView){
initWebView(itemView);
}
}
String html = " <p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462524899133986.jpg\" style=\"\" title=\"1462524899133986.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462524905929684.jpg\" style=\"\" title=\"1462524905929684.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462524910520453.jpg\" style=\"\" title=\"1462524910520453.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462524914347104.jpg\" style=\"\" title=\"1462524914347104.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462524927778143.jpg\" style=\"\" title=\"1462524927778143.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462535930458058.jpg\" title=\"1462535930458058.jpg\" alt=\"806337621792081796.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462535960619691.jpg\" style=\"\" title=\"1462535960619691.jpg\"/></p><p><img src=\"http://test.hitheone.com/uploads/ueditor/image/20160506/1462535965617029.jpg\" style=\"\" title=\"1462535965617029.jpg\"/></p><p><br/></p><p><br/></p><p><br/></p>\n";
private void initWebView(View itemView) {
WebView mWebView = (WebView) itemView;
WebSettings mSetting = mWebView.getSettings();
mSetting.setJavaScriptEnabled(true);
// mWebView.setWebChromeClient(new WebChromeClient());
// mWebView.setWebViewClient(new WebViewClient(){
// });
mWebView.loadData(html,"text/html","utf-8");
}
}
}
}
以上部分就解决了当webview作为RecyclerView的一个item的时候,RecyclerView滑动不了的问题。最重要的一句话就是给webview重新设置宽高。