Android konvertieren XML-Ansicht zu Bitmap ohne es zu zeigen

Ich versuche, einen Blick auf meinen Kartencluster zu setzen. Ich bin aufblasen eine Ansicht aus einem XML und die Einstellung der Text nach Cluster-Größe und ich möchte diese Ansicht zu zeigen. Im folgenden kode ich bekomme eine Null-Bitmap im Gegenzug:

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; } 

Im folgenden Code bekomme ich Nullzeiger auf der vierten Zeile (die Layout-Params):

 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; } 

Und wenn ich es auf den folgenden Code ändere, bekomme ich keinen Fehler, aber nichts wird gezeichnet:

 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; } 

Das ist mein 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" /> 

  • Eclipse - Deaktivieren der Kompilierung von XML-Dateien in Java-Perspektive
  • Android: validate xml-Datei zum Zeitpunkt der Kompilierung?
  • Eclipse zeigt keine XML-Fehler an
  • Entfernen Sie einen String in allen Sprachen Android
  • Rendering Probleme @ id / sichtbar Android Studio
  • Listview OnItemClick listner funktioniert nicht in Fragment
  • Aus Speicherfehler beim Aufblasen einfaches XML-Layout in Android
  • Android Ein ausziehbares XML aus mehreren Bitmaps
  • One Solution collect form web for “Android konvertieren XML-Ansicht zu Bitmap ohne es zu zeigen”

    Ihr cluster.getLayoutParams() ist wahrscheinlich null . Zuerst müssen Sie die Breite / Höhe Ihrer aufgeblasenen Ansicht messen und dann zuordnen. Mach es wie unten:

     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; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.