私はレイアウトを膨らませることによって、ビューをプログラム的に作成しようとしています。ビューのビットマップを作成する
View marker = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.overlay_view, null);
は、今私は、ビットマップには、このビューを変換したい:
public static Bitmap createDrawableFromView(Context context, View view){
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
Bitmap cache = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(cache);
view.draw(canvas);
return cache;
}
私も何も変更せずに対策(1、1)およびレイアウト(0、0、0、0)を試してみました。 ビットマップは塗りつぶされたレイアウトのように見えます。 問題:Viewに何かを置くと、ViewがViewSizeよりも幅や高さが大きくなります(例:長いテキストのTextView)、ビットマップも大きくなります。 ビューのXMLの幅と高さはWRAP_CONTENTですが、機能しませんでした。 私はBitmapだけが必要なので、このビューをどこかに置いて表示することはありません。
質問:ビューを最大幅= displayWidthにラップするにはどうすればよいですか?
私はview.setLayoutParams(新しいLayoutParam(100,100))を試しましたが、それは100よりも大きかったのですか?私は実際に何が起こったのか分からず、レイアウトを膨らませてビューの内容を設定すると、本当に分かりません。
view.getMeasuredWidthとHeightは常に私のディスプレイよりも大きいですか?ここで
を(私はそれで何か大きなものを入れている場合)のレイアウトの例です:
最初のステップ:ビューに新しいLayoutParamsを追加
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/somedrawable"
android:padding="10dp"
android:clickable="true">
<TextView android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"/>
<TextView android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:text="Description"
android:textSize="20dp"
android:textColor="#ffffff"/>
</RelativeLayout>
[回答を確認](http://stackoverflow.com/questions/8294110/taking-screenshot/8366223#8366223) –
ハム?答えはどこですか?答えはありましたが、それは今行っていますか? – Informatic0re
私が与えたリンクをチェックしてください。 –