android将XML视图转换为位图而不显示它

我试图设置一个视图到我的地图集群。 我从一个XML膨胀的观点,并根据集群大小设置文本,我想显示该视图。 在下面的代码中,我得到一个空位图

private Bitmap createClusterBitmap(int clusterSize) { View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null); cluster.setText(String.valueOf(clusterSize)); cluster.setDrawingCacheEnabled(true); cluster.buildDrawingCache(true); Bitmap bm = cluster.getDrawingCache(); return bm; } 

在下面的代码中我得到第四行(布局参数)的空指针:

 private Bitmap createClusterBitmap(int clusterSize) { View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null); TextView clusterSizeText = (TextView) cluster.findViewById(R.map.cluster); clusterSizeText.setText(String.valueOf(clusterSize)); Bitmap clusterBitmap = Bitmap.createBitmap( cluster.getLayoutParams().width, cluster.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas clusterCanvas = new Canvas(clusterBitmap); cluster.layout(cluster.getLeft(), cluster.getTop(), cluster.getRight(), cluster.getBottom()); cluster.draw(clusterCanvas); return clusterBitmap; } 

并将其更改为下面的代码时,我得到没有错误,但没有任何绘制:

 private Bitmap createClusterBitmap(int clusterSize) { View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null); TextView clusterSizeText = (TextView) cluster.findViewById(R.map.cluster); clusterSizeText.setText(String.valueOf(clusterSize)); Bitmap clusterBitmap = Bitmap.createBitmap( 50,50 , Bitmap.Config.ARGB_8888); Canvas clusterCanvas = new Canvas(clusterBitmap); cluster.layout(50, 50, 50, 50; cluster.draw(clusterCanvas); return clusterBitmap; } 

这是我的XML:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+map/cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/map_pointer_cluster" android:gravity="center" android:orientation="vertical" android:textColor="@android:color/black" android:textSize="35dp" android:textStyle="bold" /> 

  • Android:在RecyclerView中的项目之间添加分隔符
  • 吐司背景颜色被改变
  • 如何改变android仰angular阴影的方向?
  • 使用布局上方的主题combobox来select不同的布局,或修复主题样式引用
  • “内容具有ID属性'android.r.id.list'不是一个ListView类的视图”当在一个片段中创build一个列表视图
  • parsingXML时出错:找不到任何元素
  • Android Webview页面无法正确加载页面
  • 在android中创build水平和垂直的虚线
  • 你的cluster.getLayoutParams()可能是null 。 首先,您需要测量充气视图的宽度/高度,然后分配给它。 如下所示:

     private Bitmap createClusterBitmap(int clusterSize) { View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null); TextView clusterSizeText = (TextView) cluster.findViewById(R.id.map_cluster_text); clusterSizeText.setText(String.valueOf(clusterSize)); cluster.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); cluster.layout(0, 0, cluster.getMeasuredWidth(),cluster.getMeasuredHeight()); final Bitmap clusterBitmap = Bitmap.createBitmap(cluster.getMeasuredWidth(), cluster.getMeasuredHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(clusterBitmap); cluster.draw(canvas); return clusterBitmap; }