作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 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/
我是一名优秀的程序员,十分优秀!