0

私は適切に動作し、セットアップされている MapView を持っています。描画されているオーバーレイ アイテムは (単にドローアブルとして参照されている場合) 正常に動作します。ただし、各ドローアブル アイテムには数値を含める必要があります (たとえば、オーバーレイ アイテム 1 には #1 を表示する必要があります)。レイアウト スタイル R.layout.map_bubble_standard を作成しました。そのビューをビットマップに変換し、そのビットマップをドローアブルに変換してマップに表示しようとしています。ただし、マップをロードしても何も表示されません。これが私がやっていることです...

        LayoutInflater inflater = (LayoutInflater) _context.getSystemService(     Context.LAYOUT_INFLATER_SERVICE );
        LinearLayout bubbleView = (LinearLayout)inflater.inflate(R.layout.map_bubble_standard, null);

        bubbleView.setDrawingCacheEnabled(true);
        bubbleView.buildDrawingCache();

        //drawable = _context.getResources().getDrawable(R.drawable.map_pin_48);
        drawable = new BitmapDrawable(_context.getResources(), bubbleView.getDrawingCache());
        bubbleView.setDrawingCacheEnabled(false);

    OverlayItem oi = _overlays.get(whichOne); 
    oi.setMarker(boundCenterBottom(drawable));

私のコードはメソッドを正常に完了しますが、マップには何も描画されません。私が間違っていることを誰かが判断するのを助けることができますか?

[編集] - 解決済み

これを修正するためのアドバイスを提供する、見つけた別のリンクを使用しました: ここ

うまくいけば、これは将来も他の誰かを助けることができます. 参考までに、ビューのインフレータとインフレータ オブジェクト自体も、アイテム化されたオーバーレイ クラスのデフォルト コンストラクタに移動しました。

_bubbleLayout.setDrawingCacheEnabled(true);

        _bubbleLayout.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        _bubbleLayout.layout(0, 0, _bubbleLayout.getMeasuredWidth(), _bubbleLayout.getMeasuredHeight()); 

        _bubbleLayout.buildDrawingCache(true);
        Bitmap b = Bitmap.createBitmap(_bubbleLayout.getDrawingCache());
        _bubbleLayout.setDrawingCacheEnabled(false); // clear drawing cache 

        //drawable = _context.getResources().getDrawable(R.drawable.map_pin_48);
        drawable = (Drawable) new BitmapDrawable(_context.getResources(),b);



    OverlayItem oi = _overlays.get(whichOne); 
    oi.setMarker(boundCenterBottom(drawable));
4

1 に答える 1

1

これが正しいかどうかはわかりませんが、ドキュメントによると:

キャッシュを利用するには、getDrawingCache() を呼び出して描画キャッシュを要求し、返されたビットマップが null でない場合は画面に描画する必要があります。

私にとっては、View何かを取り戻す前に、画面に一度描画したに違いないことを意味します。実際に描画されていない場合は、プルするキャッシュがありません。これを最初に画面に表示しますか?

于 2012-07-25T18:02:41.593 に答える