Java 将webview转换为位图的高度问题
我正在将webview转换为位图进行打印,我的问题是,当我单击“打印”按钮时,整个网页不打印,仅打印设备高度,第一次尝试时,剩余部分将打印为空白,另一次单击“打印”按钮,整个网页将被打印。请告诉我在第一次尝试时打印整个网络视图。我已经提到了我使用的以下代码Java 将webview转换为位图的高度问题,java,android,Java,Android,我正在将webview转换为位图进行打印,我的问题是,当我单击“打印”按钮时,整个网页不打印,仅打印设备高度,第一次尝试时,剩余部分将打印为空白,另一次单击“打印”按钮,整个网页将被打印。请告诉我在第一次尝试时打印整个网络视图。我已经提到了我使用的以下代码 protected void onCreate(Bundle savedInstanceState) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
protected void onCreate(Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.Main-activity);
bt_print.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bmp = getScreenBitmap();``
}
});
}
public Bitmap getScreenBitmap() {
final WebView webView = (WebView) findViewById(R.id.webview);
webView.setDrawingCacheEnabled(true);
webView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(), webView.getMeasuredHeight());
webView.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(webView.getDrawingCache());
webView.setDrawingCacheEnabled(false); // clear drawing cache
return b;
}```
Below code is Main-activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/AppTheme"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.fusion.print" >
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
<Button
android:id="@+id/btn_print"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#1C5C1C"
android:layout_alignParentBottom="true"
android:contentDescription="@string/btn_button"
android:text="@string/btn_button"
android:textColor="#ffffff"/>
</RelativeLayout>
创建时受保护的void(Bundle savedInstanceState){
getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开);
setContentView(R.layout.Main活动);
bt_print.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
位图bmp=getScreenBitmap()``
}
});
}
公共位图getScreenBitmap(){
最终WebView WebView=(WebView)findViewById(R.id.WebView);
webView.setDrawingCacheEnabled(true);
webView.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected),
MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect));
布局(0,0,webView.getMeasuredWidth(),webView.getMeasuredHeight());
webView.buildDrawingCache(true);
位图b=Bitmap.createBitmap(webView.getDrawingCache());
webView.setDrawingCacheEnabled(false);//清除图形缓存
返回b;
}```
下面的代码是Main-activity.xml
对于任何滚动的对象,都有两组“帧”。一组是可见视口,通常受设备屏幕大小的限制。另一个是内容视图,它包含所有数据,其中一些在屏幕上可见,一些在可滚动区域的屏幕外可见。您需要尝试打印内容视图,而不是视口视图。感谢您的回复,我已设置内容视图,但打印机将仅打印设备高度,剩余的将是空白。下次单击“打印机”将打印。我已附加我的xml文件您正在将webView内容捕获到位图中,然后希望打印该位图。你考虑过其他的选择吗?以下是使用webView的打印机相关方法的一个示例: