gpt4 book ai didi

android - 如何在recyclerview中加载webview?

转载 作者:行者123 更新时间:2023-12-04 23:56:44 27 4
gpt4 key购买 nike

我想在 recyclerview 中加载一个 webview。

我试过在默认浏览器(比如 chrome)中打开网页。

谁能帮我做一下?

最佳答案

从 Android 库继承 WebView:

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;


public class MyWebView extends WebView {

public MyWebView(Context context) {
super(context);
initDefaultSetting();
}

public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
initDefaultSetting();
}

public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initDefaultSetting();
}

public MyWebView(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
initDefaultSetting();
}


private void initDefaultSetting() {
WebSettings webSettings = this.getSettings();
webSettings.setJavaScriptEnabled(true);
setWebChromeClient(new WebChromeClient());
setWebViewClient(new MyWebViewClient());
}

/**
* Load Web View with url
*/
public void load(String url) {
this.loadUrl(url);
}

}

从库中继承并重写WebViewClient的一个方法

类:MyWebViewClient

public class MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;

}
}

布局:row_my_web.xml

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp">

<com.silicus.fluidforms.MyWebView
android:id="@+id/myWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</FrameLayout>

类:ParentAdapter

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.silicus.fluidforms.MyWebView;
import com.silicus.fluidforms.R;
import com.silicus.fluidforms.expandable.ParentAdapter.MyViewHolder;


public class ParentAdapter extends RecyclerView.Adapter<MyViewHolder> {


private String urlList[] = {
"https://stackoverflow.com/questions/2835556/whats-the-difference-between-setwebviewclient-vs-setwebchromeclient",
"https://developer.android.com/guide/webapps/webview",
"https://www.google.com",
"https://www.bling.com"};


@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_my_web, parent, false);
return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.myWebView.load(urlList[position]);
}

@Override
public int getItemCount() {
return urlList.length;
}

class MyViewHolder extends RecyclerView.ViewHolder {

MyWebView myWebView;

MyViewHolder(View itemView) {
super(itemView);
myWebView = itemView.findViewById(R.id.myWebView);
}
}
}

关于android - 如何在recyclerview中加载webview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com