2011-07-28 14 views
2

リストビューのビットマップを作成しようとしましたが、リストビュー全体が画面に表示されません。私は使用していますビットマップを使用したリストビュー

Bitmap mBitmap = fullView.getDrawingCache(); 

ビットマップを作成します。それは、リストビューのビットマップが画面上に完全に表示することなく作成できるかどうかを知りたいと思っています。 。すべての提案や解決策は高く評価されています。

答えて

0

アンドロイドは目に見えるものだけを描画するので、ビットマップを分割してビットマップを1つにまとめることが考えられます。まず最初のn個のアイテムのビットマップを取得できます。次にscrollToメソッドを使用して、前のn個の項目を超えてスクロールし、次のn個の項目のビットマップを取得します。この方法で、リストビュー全体のビットマップを取得できます。

+0

のように、この方法でビューを渡しますか?私は同じ問題を解決しようとしており、scrollToは私にとってはうまくいかないようです。私はscrollTo(0、i * height)を使用しています。ここでheightはlistView.getChildAt(0).getHeight() – 8oh8

0

この方法をお試しください。ここでのハックは、ビューのレイアウトと測定方法を自分で呼び出すことです。

public Bitmap loadBitmapFromView(View v) { 
    v.setLayoutParams(new ViewGroup.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 
      View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
    Bitmap bitmap = Bitmap.createBitmap(v.getMeasuredWidth(), 
      v.getMeasuredHeight(), 
      Bitmap.Config.ARGB_8888); 


    Canvas c = new Canvas(bitmap); 
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
    v.draw(c); 
    return bitmap; 
} 

あなたは、これが動作するようになったことがあります

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View inflatedFrame = inflater.inflate(R.layout.my_view, null); 
Bitmap bitmap = loadBitmapFromView(inflatedFrame.findViewById(R.id.id_of_your_view_in_layout)); 
関連する問題