Я программно генерирую представление в Android. Родительский вид - это RelativeLayout
, и я добавляю subviews динамически (например, TextView
и ImageView
).Программно сгенерировать растровое изображение и захват изображений
Если я добавлю представление в основной вид моей деятельности, тогда он отобразит прекрасный (как и ожидалось). Использование этого кода.
LinearLayout mainView = (LinearLayout)findViewById(R.id.mainView);
mainView.addView(dynamicallyGeneratedView);
Я не хочу добавлять представление в качестве подсмотра, хотя я просто хочу превратить его в растровое изображение. Поэтому я делаю следующее:
view.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);
Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.draw(c);
Но когда я добавляю это растровое изображение в ImageView, он ничего не показывает.
Что я делаю неправильно? Я хочу создать представление, превратить его в растровое изображение, но не отображает его на экране.
Любая помощь будет оценена по достоинству.
Хорошо, что сработало несколько, спасибо (теперь я вижу изображение), но, к сожалению, он не выделяет subviews в растровом изображении так же, как когда я добавляю представление как подвью непосредственно. Есть ли способ заставить мнение подумать о том, что он добавлен в качестве представления в представление активности, фактически не добавив его? –
@ThomasClayson: Не то, что я знаю. Однако наличие корня «RelativeLayout», вероятно, является вашей проблемой. Попробуйте обернуть его чем-то другим (например, «FrameLayout») или переключиться на другой класс контейнера, чем «RelativeLayout». 'RelativeLayout' работает только в том случае, если он знает своего родителя, и в вашем случае у него нет родителя. – CommonsWare
Отлично. Я добавил дополнительный FrameLayout в качестве родительского представления для моего RelativeLayout и теперь он работает! Большое спасибо. –