我嘗試通過膨脹佈局來創建View programaticaly。創建視圖的位圖
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)無任何變化。 位圖看起來像填充的佈局。 現在的問題:如果我把東西放到視圖中,使得視圖的寬度或高度比顯示尺寸大(例如:帶有長文本的TextView),則位圖也更大。 視圖的XML寬度和高度是WRAP_CONTENT,但它沒有奏效。 我從來沒有把這個視圖顯示在某處(因爲我只需要位圖)。
問題:如何將視圖WRAP包裝到最大寬度= displayWidth?
我試過view.setLayoutParams(新的LayoutParam(100,100)),但它也大於100?!我真的不明白髮生了什麼,當我膨脹佈局和設置視圖的內容。
view.getMeasuredWidth和Height總是比我的顯示更大?! (如果我把在它更大的東西)
這裏是佈局的例子:
<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) – 2012-01-11 11:52:45
哼?答案在哪裏?有一個答案,但它現在消失了?! – Informatic0re 2012-01-11 13:19:59
檢查我給出的鏈接。 – 2012-01-11 14:25:13