RecyclerView里面套用webview 显示不全

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{

        @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 = " 

\"806337621792081796.jpg\"/




\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重新设置宽高。

你可能感兴趣的:(android项目开发经验)