Android imageview with text

Добавление текста в ImageView в Android

У меня есть один ImageView. Я хочу показать это изображение, чтобы показать какое-то сообщение причудливо. Поэтому я хочу добавить текст к этому ImageView. Может ли кто-нибудь сказать мне, как я могу это сделать.

Чтобы добавить текст в ImageView вы можете сделать это:

Вы также можете использовать TextView и установить фоновое изображение на то, что вам нужно в ImageView . Кроме того, если вы используете ImageView в качестве кнопки, вы можете настроить его на клики

Вот некоторый базовый код для TextView который показывает изображение с текстом поверх него.

Лучший вариант использования текста и изображения в одном представлении попробуйте следующее:

Используйте drawalbeLeft / Right / Bottom / Top в TextView для рендеринга изображения в соответствующем положении.

Я знаю, что этот вопрос был и ушел, но если кто-то еще наткнулся на это, я хотел сообщить им об этом. Это может звучать неинтуитивно, но вы можете использовать кнопку с кликабельным набором в false или когда-либо. Это связано с тем, что кнопка позволяет добавить в текст drawableLeft, drawableRight, drawableTop и т. Д.

Новая информация: кнопка может иметь значки в drawableLeft, drawableRight, drawableTop и drawableBottom. Это делает стандартную кнопку более гибкой, чем кнопка изображения. Левый, правый, верхний и т. Д. – это отношение к тексту в кнопке. На кнопке может быть несколько ярлыков, например один слева, один справа и текст посередине.

С помощью FrameLayout вы можете поместить текст поверх изображения, а также рамочный макет, содержащий как изображение, так и текстовое изображение.

Если этого недостаточно, и вам нужно что-то более необычное, как текст «рисования», вам нужно нарисовать текст на холсте. Образец здесь: Как нарисовать текст RTL (арабский) на растровое изображение и заказать его правильно?

Чтобы нарисовать текст прямо на холсте, выполните следующие действия:

Создание объекта-объекта myImageView конструкторе myImageView

Используйте canvas.drawText в myImageView.onDraw() :

Изучите документацию класса Paint и Canvas, чтобы добавить причудливые эффекты.

Источник

How to Add Text Drawable to ImageView in Android?

In many android apps, you will get to see a feature in which you can see a simple text is displayed inside an ImageView or you can get to see that a text is displayed in a specific image or a shape. Mostly this type of view is seen in the Contacts application which is present on your Android device. In that app, you will get to see the first letter of every contact name in a circular image view. In this article, we will take a look at creating the same type of view in our Android application.

Читайте также:  Метатрейдер для андроид как работать

What we are going to build in this article?

We will be building a simple application in which we will be displaying a simple text in our image view in Android using text drawable. We will be displaying our text in different shapes. Below is the screenshot in which we will get to see what we are going to build in this article.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.

Step by Step Implementation

Step 1: Create a New Project

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.

Step 2: Add dependency and JitPack Repository

Navigate to the Gradle Scripts > build.gradle(Module:app) and add the below dependency in the dependencies section.

Add the JitPack repository to your build file. Add it to your root build.gradle at the end of repositories inside the allprojects < >section.

After adding this dependency sync your project and now we will move towards its implementation.

Источник

ImageView

Общая информация

Компонент ImageView предназначен для отображения изображений. Находится в разделе Widgets.

Для загрузки изображения в XML-файле используется атрибут android:src, в последнее время чаще используется атрибут app:srcCompat.

ImageView является базовым элементом-контейнером для использования графики. Можно загружать изображения из разных источников, например, из ресурсов программы, контент-провайдеров. В классе ImageView существует несколько методов для загрузки изображений:

  • setImageResource(int resId) — загружает изображение по идентификатору ресурса
  • setImageBitmap(Bitmap bitmap) — загружает растровое изображение
  • setImageDrawable(Drawable drawable) — загружает готовое изображение
  • setImageURI(Uri uri) — загружает изображение по его URI

Метод setImageResource()

Сначала нужно получить ссылку на ImageView, а затем используется идентификатор изображения из ресурсов:

Метод setImageBitmap()

Используется класс BitmapFactory для чтения ресурса изображения в объект Bitmap, а затем в ImageView указывается полученный Bitmap. Могут быть и другие варианты.

Метод setImageDrawable()

Если у вас есть готовое изображение, например, на SD-карте, то его можно использовать в качестве объекта Drawable.

Drawable можно получить и из ресурсов, хотя такой код выглядит избыточным, если можно сразу вызвать setImageResource().

Метод setImageURI()

Берётся URI файла изображения и используется в качестве источника изображения. Этот способ годится для работы с локальными изображениями.

Загружаем Drawable через URI.

Другие методы

Также вам часто придется использовать методы, связанные с размерами и масштабированием: setMaxHeight(), setMaxWidth(), getMinimunHeight(), getMinimunWidth(), getScaleType(), setScaleType().

Масштабирование через свойство Scale Type

Для масштабирования картинки в ImageView есть свойство Scale Type и соответствующий ему атрибут android:scaleType и перечисление ImageView.ScaleType.

  • CENTER
  • CENTER_CROP
  • CENTER_INSIDE
  • FIT_CENTER
  • FIT_START
  • FIT_END
  • FIT_XY
  • MATRIX

Чтобы увидеть разницу между разными режимами, желательно использовать большую картинку, превосходящую по ширине экрана устройства. Допустим, у нас есть простенькая разметка:

Читайте также:  Частный dns сервер adguard для андроид

Для наглядности я задал красный цвет для фона ImageView.

Режим android:scaleType=»center» выводит картинку в центре без масштабирования. Если у вас будет картинка большего размера, то края могут быть обрезаны.

Режим android:scaleType=»centerCrop» также размещает картинку в центре, но учитывает ширину или высоту контейнера. Режим попытается сделать так, чтобы ширина (или высота) картинки совпала с шириной (или высотой) контейнера, а остальное обрезается.

Режим android:scaleType=»centerInside» масштабирует картинку, сохраняя пропорции. Можно увидеть задний фон контейнера, если его размеры отличаются от размера картинки.

Режим android:scaleType=»fitCenter» (по умолчанию) похож на предыдущий, но может не сохранять пропорции.

Если выбрать режим android:scaleType=»fitStart», то картинка прижимается к левому верхнему углу и таким образом заполняет верхнюю половину контейнера.

Значение android:scaleType=»fitEnd» сместит картинку в нижнюю часть контейнера.

Режим android:scaleType=»fitXY» растягивает/сжимает картинку, чтобы подогнать её к контейнеру. Может получиться вытянутая картинка, поэтому будьте осторожны.

Последний атрибут android:scaleType=»matrix» вывел картинку без изменений в левом верхнем углу с обрезанными краями.

Атрибут android:adjustViewBounds=»true»

При использовании атрибута scaleType=»fitCenter» из предыдущего примера Android вычисляет размеры самой картинки, игнорируя размеры ImageView. В этом случае ваша разметка может «поехать». Атрибут adjustViewBounds заставляет картинку подчиниться размеру компонента-контейнера. В некоторых случаях это может не сработать, например, если у ImageView установлен атрибут layout_width=»0dip». В таком случае поместите ImageView в RelativeLayout или FrameLayout и используйте значение 0dip для этих контейнеров.

Загрузка изображения из галереи

Предположим, у вас есть на экране компонент ImageView, и вы хотите загрузить в него какое-нибудь изображение из галереи по нажатию кнопки:

Намерение ACTION_PICK вызывает отображение галереи всех изображений, хранящихся на телефоне, позволяя выбрать одно изображение. При этом возвращается адрес URI, определяющий местоположение выбранного изображения. Для его получения используется метод getData(). Далее для преобразования URI-адреса в соответствующий экземпляр класса Bitmap используется специальный метод Media.getBitmap(). И у нас появляется возможность установить изображение в ImageView при помощи setImageBitmap().

На самом деле можно поступить ещё проще и использовать метод setImageURI.

Сравните с предыдущим примером — чувствуете разницу? Тем не менее, приходится часто наблюдать подобный избыточный код во многих проектах. Это связано с тем, что метод порой кэширует адрес и не происходит изменений. Рекомендуется использовать инструкцию setImageURI(null) для сброса кэша и повторный вызов метода с нужным Uri.

В последних версиях системных эмуляторов два примера не работают. Проверяйте на реальных устройствах.

Получить размеры ImageView — будьте осторожны

У элемента ImageView есть два метода getWidth() и getHeight(), позволяющие получить его ширину и высоту. Но если вы попробуете вызвать указанные методы сразу в методе onCreate(), то они возвратят нулевые значения. Можно добавить кнопку и вызвать данные методы через нажатие, тогда будут получены правильные результаты. Либо использовать другой метод активности, который наступает позже.

Копирование изображений между ImageView

Если вам надо скопировать изображение из одного ImageView в другой, то можно получить объект Drawable через метод getDrawable() и присвоить ему второму компоненту.

Примеры

В моих статьях можно найти примеры использования ImageView.

Источник

Размещение textview поверх imageview в android

это дает выход как ниже

Читайте также:  Как поставить картинку фоном android studio

как сделать что-то вроде ниже

Примечание:: Блюдо 1 & 2 являются textviews

7 ответов

это должно дать вам необходимую планировку:

сыграет с android:layout_marginTop=»20dp» чтобы увидеть, какой подходит вам лучше. Используйте код textview для динамической установки android:text значение.

поскольку RelativeLayout стекает свои дочерние элементы, определение TextView после ImageView помещает его «поверх» ImageView.

Примечание: аналогичные результаты могут быть получены с помощью FrameLayout как родитель, наряду с повышением эффективности по сравнению с использованием любого другого android контейнер. Спасибо Igor Ganapolsky (см. комментарий ниже), отметив, что этот ответ нуждается в обновлении.

надеюсь, это может вам помочь.

можно использовать framelayout для достижения этой цели.

Как использовать framelayout

просто перетащите TextView поверх ImageView в eclipse

и это вывод вышеуказанного xml

как вы упомянули в OP, вам нужно наложить Text on ImageView как программно. Вы можете получить ImageView drawable и писать на нем с помощью размещения его на Canvas и Paint .

вы можете попробовать это слишком. Я использую просто так.

может быть, вам стоит сначала написать ImageView, а затем TextView. Иногда это помогает. Это просто, но я надеюсь, что это кому-то поможет. 🙂

Источник

Поместите изображение рядом с текстом

Я пытаюсь разместить изображение рядом с текстовым изображением. Однако они продолжают заканчивать по разным «линиям».

Размещение изображения как составного чертежа не является вариантом, поскольку оно используется для другого изображения.

Есть какие-нибудь подсказки о том, как я могу разместить изображение в той же строке, что и текст?

5 ответов

Я хотел бы дать вам несколько советов, когда вы пытаетесь создать пользовательский интерфейс приложения. Первое, что вам следует сделать, это попытаться получить нужный пользовательский интерфейс с помощью инструмента дизайна, в котором вы можете разместить элементы пользовательского интерфейса и, что более важно, вы также можете увидеть, какие атрибуты вы можете установить для определенного макета. Это сэкономит вам время.

И ответом на ваш вопрос будет линейная компоновка, что является наиболее простым способом. Просто постарайтесь избегать веса (здесь не обязательно), потому что на создание пользовательского интерфейса уходит больше времени.

Вот отличный урок, чтобы лучше понять макет.

И, конечно, ответ на ваш вопрос (сделал это просто с помощью инструмента дизайна):

Вы можете сделать это так

Использование Compound Drawable

Здесь вы устанавливаете ImageView слева от TextView

Иначе, если вы хотите, чтобы это было отдельными компонентами, попробуйте это (Другой способ сделать)

Измените android:orientation из LinearLayout , если вы хотите, чтобы оно было вертикальным, соответственно измените и android:gravity

Этого можно добиться двумя способами.

Используйте LinearLayout в качестве контейнера / родителя с вертикальной или горизонтальной ориентацией, что соответствует вашим потребностям.

Вы можете использовать относительный макет в качестве контейнера / родителя, а затем использовать свойство «toRightOf» или «выше» / «ниже» и использовать идентификаторы ваших дочерних представлений.

Лучший подход — первый, так как относительный макет измеряется дважды.

Используйте android: layout_toRightOf : Позиционирует левый край этого представления справа от заданного идентификатора представления привязки. Устанавливает левое поле этого представления и правое поле представления привязки. Свойство RelativeLayout. Итак, наконец,

Источник

Оцените статью