Создать изображение imageview, имеющее textview на нем
Привет imageview
имеющий EditText
на этом изображении. Я хочу создать единый образ этого imageview
с EditText
,
Я попробовал это,
editTextOptOneInput.buildDrawingCache();
imageViewOptOne.setImageBitmap(editTextOptOneInput.getDrawingCache());
imageViewOptOne.buildDrawingCache();
Bitmap bitmap1 = imageViewOptOne.getDrawingCache();
но измените мое изображение на чёрное, так как мой цвет текста чёрный (наверное).
4 ответа
Вы можете использовать только 1 buildDrawingCache (), последующие заменят предыдущее содержимое.
Итак, вам лучше сгруппировать EditText и ImageView в контейнер и снимать его.
ИЛИ ЖЕ...
Вместо использования EditText, просто используйте TextView.
Этот может иметь один или несколько составных элементов для рисования внутри.
Таким образом, вы можете снимать только TextView.
Это предпочтительное решение, так как оно уменьшает представление и (возможно) количество макетов.
[РЕДАКТИРОВАТЬ]
Чтобы использовать составные чертежи, просто используйте в XML android:drawableLeft = "@drawable/your_drawable"
(и / или drawableRight, drawableTop, drawableBottom) атрибутов вашего TextView.
Чтобы установить их в Java, используйте setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)
Как указано в официальных документах: http://developer.android.com/reference/android/widget/TextView.html, int, int, int)
Напоминание:
Если вы захватываете результирующее изображение + текст с экрана, качество выходного изображения, безусловно, ухудшается
Если вы хотите сохранить исходное качество изображения, вы должны использовать Canvas и Bitmap, чтобы помочь вам
Canvas c=new Canvas();
c.setBitmap(bitmap); // *mutable* copy of bitmap of the image for the ImageView
c.drawText(text, x, y, paint); // font size and typeface can be set through "Paint" class
bitmap.compress(CompressFormat.PNG, 100, new FileOutputStream(out)); // export output
Вам нужно получить кэш рисования Parent этого изображения и EditText.
parentLayout.buildDrawingCache();
Bitmap bitmap1 = parentLayout.getDrawingCache();
Где parentLayout содержит imageview и EditText.
Я не понимаю, зачем вам это нужно, но, насколько я понимаю, вы должны создать новый растровый объект из кэша чертежей, прежде чем установить его в качестве источника ImageView.