Как поместить рамку вокруг символа в textview
Перейти к содержимому

Как поместить рамку вокруг символа в textview

Как поставить рамку вокруг текстового поля Android?

Можно ли нарисовать рамку вокруг текстового представления?

21 ответ

Вы можете установить фигуру, которую можно рисовать (прямоугольник), в качестве фона для представления.

И прямоугольник drawable back.xml (поместите в папку res / drawable):

Вы можете использовать @android:color/transparent , чтобы сплошной цвет имел прозрачный фон. Вы также можете использовать отступы, чтобы отделить текст от границы. для получения дополнительной информации см .: http://developer.android.com/guide/ темы / ресурсы / drawable-resource.html

Самый простой способ — добавить представление для TextView. Пример нижней границы:

Для границ других направлений отрегулируйте положение разделителя.

Я решил эту проблему, расширив текстовое поле и нарисовав границу вручную. Я даже добавил, что вы можете выбрать, будет ли граница пунктирной или пунктирной.

И класс границы:

Надеюсь, это кому-то поможет 🙂

Самое простое решение, которое я нашел (и которое действительно работает):

Я просто смотрел на аналогичный ответ — это можно сделать с помощью Stroke и следующего переопределения:

Установить границу можно двумя способами. Один из них можно рисовать, а второй — программный.

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

Я нашел лучший способ поставить рамку вокруг TextView.

Используйте изображение с девятью патчами для фона. Это довольно просто, SDK поставляется с инструментом для создания образа с 9 патчами и не требует абсолютно никакого кодирования.

Вы можете добавить в свой код что-то вроде этого:

Папка drawable в разделе res в проекте Android не ограничивается растровыми изображениями (файлами PNG или JPG), но также может содержать формы, определенные в файлах XML.

Эти формы затем можно повторно использовать в проекте. Фигура может использоваться для создания границы вокруг макета. В этом примере показана прямоугольная рамка с изогнутыми углами. В папке с возможностью рисования создается новый файл с именем customborder.xml (в Eclipse используйте меню «Файл» и выберите «Создать», затем «Файл» с выбранным типом папки для рисования в имени файла и нажмите «Готово»).

Вводится XML, определяющий форму границы:

Атрибут android:shape установлен на прямоугольник (файлы форм также поддерживают овал, линию и кольцо). Прямоугольник — это значение по умолчанию, поэтому этот атрибут можно не указывать, если это определяемый прямоугольник. См. Документацию Android по фигурам на странице http://developer.android. .com / guide / themes / resources / drawable-resource.html # Shape для получения подробной информации о файле формы.

Углы элемента задают скругление углов прямоугольника. Можно установить разные радиусы для каждого угла (см. Справку по Android).

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

Цвет границы здесь установлен на светло-серый (шестнадцатеричное значение RGB в формате 1970).

Фигуры также поддерживают градиенты, но здесь они не используются. Опять же, просмотрите ресурсы Android, чтобы узнать, как определяется градиент. Форма применяется к макету с помощью android:background=»@drawable/customborder» .

Внутри макета могут быть добавлены другие виды в обычном порядке. В этом примере был добавлен один TextView с белым текстом (FFFFFF шестнадцатеричный RGB). Для фона задан синий цвет, плюс некоторая прозрачность для уменьшения яркости (шестнадцатеричное значение альфа RGB A00000FF). Наконец, макет смещается от края экрана, помещая его в другой макет с небольшим отступом. Таким образом, полный файл макета выглядит так:

У меня есть способ сделать это очень просто, и я хотел бы им поделиться.

Когда я хочу возвести mi TextView в квадрат, я просто помещаю их в LinearLayout. Я устанавливаю цвет фона своего LinearLayout и добавляю поле в свой TextView. Результат такой же, как если бы вы скомпилировали TextView.

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

  1. Зайдите в свой проект.
  2. Перейдите к ресурсам и щелкните правой кнопкой мыши, чтобы выделить.
  3. Нажмите New -> Drawable Resource File.
  4. Дайте имя вашему файлу
  5. Вставьте следующий код в файл

Для вашего текстового представления, где вы хотите использовать его в качестве фона,

android: background = «@ drawable / your_fileName»

С помощью библиотеки компонентов материалов вы можете использовать MaterialShapeDrawable .

Затем вы можете программно применить MaterialShapeDrawable :

enter image description here

Изменение ответа Константина Бурова, потому что в моем случае не работает:

CompileSdkVersion 26 (Android 8.0), minSdkVersion 21 (Android 5.0), targetSdkVersion 26, реализация com.android.support:appcompat-v7:26.1.0, gradle: 4.1

Вот мой «простой» вспомогательный класс, который возвращает ImageView с рамкой. Просто поместите это в свою папку utils и назовите так:

Как поставить рамку вокруг текстового представления Android?

Можно ли нарисовать границу вокруг текстового представления?

Вы можете установить форму для рисования (прямоугольник) в качестве фона для вида.

И прямоугольник drawable back.xml (положить в папку res / drawable):

Вы можете использовать @android:color/transparent для сплошного цвета, чтобы иметь прозрачный фон. Вы также можете использовать отступы, чтобы отделить текст от границы. Для получения дополнительной информации см .: http://developer.android.com/guide/topics/resources/drawable-resource.html

Позвольте мне обобщить несколько различных (непрограммных) методов.

Использование формы для рисования

Сохраните следующее в виде XML-файла в папке для рисования (например, my_border.xml):

Затем просто установите его в качестве фона для вашего TextView:

Использование 9-патча

9-патч растягивается фоновое изображение. Если вы создадите изображение с рамкой, тогда оно даст вашему TextView рамку. Все, что вам нужно сделать, это сделать изображение, а затем установить его в качестве фона в вашем TextView.

Вот несколько ссылок, которые покажут, как сделать изображение из 9 патчей:

Что если я просто хочу верхнюю границу?

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

Вы можете использовать список слоев, чтобы сложить два прямоугольника друг на друга. Сделав второй прямоугольник чуть меньше первого, вы можете создать эффект границы. Первый (нижний) прямоугольник — это цвет границы, а второй прямоугольник — это цвет фона.

Установка android:top=»2dp» смещает верх (делает его меньше) на 2dp. Это позволяет первому (нижнему) прямоугольнику просвечивать, создавая эффект границы. Вы можете применить это к фону TextView так же, как shape рисование было сделано выше.

Вот еще несколько ссылок о списках слоев:

Использование 9-патча

Вы можете просто сделать изображение из 9 патчей с одной рамкой. Все остальное так же, как обсуждалось выше.

Использование представления

Это своего рода хитрость, но она хорошо работает, если вам нужно добавить разделитель между двумя представлениями или границу для одного TextView.

Вот еще несколько ссылок:

Простой способ — добавить представление для вашего TextView. Пример для нижней границы:

Для других границ направления, пожалуйста, отрегулируйте расположение вида разделителя.

Я решил эту проблему, расширив текстовое представление и нарисовав границу вручную. Я даже добавил, чтобы вы могли выбрать, если граница пунктирная или пунктирная.

И пограничный класс:

Надеюсь, это поможет кому-то 🙂

Я просто смотрел на аналогичный ответ — это можно сделать с помощью Stroke и следующего переопределения:

Вы можете установить границу двумя способами. Один отрисовывается, а второй — программный.

Используя Drawable

Самое простое решение, которое я нашел (и которое действительно работает):

Я нашел лучший способ поместить границу вокруг TextView.

Используйте изображение из девяти пятен для фона. Это довольно просто, SDK поставляется с инструментом для создания изображения из 9 патчей и абсолютно не требует кодирования.

Вы можете добавить что-то вроде этого в свой код:

Папка Drawable в разделе res в проекте Android не ограничивается растровыми изображениями (файлы PNG или JPG), но также может содержать формы, определенные в файлах XML.

Эти формы затем могут быть повторно использованы в проекте. Форма может быть использована для наложения границы вокруг макета. В этом примере показана прямоугольная граница с изогнутыми углами. В папке drawable создается новый файл customborder.xml (в Eclipse используйте меню «Файл» и выберите «Создать», затем «Файл», в выбранной папке для рисования введите имя файла и нажмите «Готово»).

XML, определяющий форму границы, вводится:

Атрибут android:shape установлен на прямоугольник (файлы формы также поддерживают овал, линию и кольцо). Прямоугольник является значением по умолчанию, поэтому этот атрибут можно было бы опустить, если он является определяемым прямоугольником. Обратитесь к документации Android по фигурам по адресу http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape для получения подробной информации о файле фигур .

Углы элемента задают скругленные углы прямоугольника. Можно установить разные радиусы на каждом углу (см. Ссылку на Android).

Атрибуты заполнения используются для перемещения содержимого представления, к которому применяется форма, для предотвращения перекрытия границы содержимым.

Цвет границы здесь светло-серый (шестнадцатеричное значение RGB).

Фигуры также поддерживают градиенты, но здесь они не используются. Снова, посмотрите ресурсы Android, чтобы увидеть, как определяется градиент. Форма применяется к макету с помощью android:background=»@drawable/customborder» .

В макете другие виды могут быть добавлены как обычно. В этом примере был добавлен один TextView, а текст белый (шестнадцатеричный RGB FFFFFF). Фон установлен в синий цвет, плюс некоторая прозрачность для уменьшения яркости (шестнадцатеричное альфа-RGB-значение A00000FF). Наконец, макет смещается от края экрана, помещая его в другой макет с небольшим количеством отступов. Полный файл макета, таким образом:

How to put a border around an Android TextView?

Is it possible to draw a border around an Android TextView ?

23 Answers 23

You can set a shape drawable (a rectangle) as background for the view.

And rectangle drawable back.xml (put into res/drawable folder):

You can use @android:color/transparent for the solid color to have a transparent background. You can also use padding to separate the text from the border. for more information see: http://developer.android.com/guide/topics/resources/drawable-resource.html

Let me summarize a few different (non-programmatic) methods.

Using a shape drawable

Save the following as an XML file in your drawable folder (for example, my_border.xml):

Then just set it as the background to your TextView:

Using a 9-patch

A 9-patch is a stretchable background image. If you make an image with a border then it will give your TextView a border. All you need to do is make the image and then set it to the background in your TextView.

Here are some links that will show how to make a 9-patch image:

What if I just want the top border?

Using a layer-list

You can use a layer list to stack two rectangles on top of each other. By making the second rectangle just a little smaller than the first rectangle, you can make a border effect. The first (lower) rectangle is the border color and the second rectangle is the background color.

Setting android:top=»2dp» offsets the top (makes it smaller) by 2dp. This allows the first (lower) rectangle to show through, giving a border effect. You can apply this to the TextView background the same way that the shape drawable was done above.

Here are some more links about layer lists:

Using a 9-patch

You can just make a 9-patch image with a single border. Everything else is the same as discussed above.

Using a View

This is kind of a trick but it works well if you need to add a seperator between two views or a border to a single TextView.

Here are some more links:

The simple way is to add a view for your TextView. Example for the bottom border line:

For the other direction borders, please adjust the location of the separator view.

user avatar

I have solved this issue by extending the textview and drawing a border manually. I even added so you can select if a border is dotted or dashed.

And the border class:

Hope this helps someone 🙂

user avatar

Simplest solution I’ve found (and which actually works):

You can set the border by two methods. One is by drawable and the second is programmatic.

Using Drawable

user avatar

user avatar

I was just looking at a similar answer— it’s able to be done with a Stroke and the following override:

You can add something like this in your code:

user avatar

I found a better way to put a border around a TextView.

Use a nine-patch image for the background. It’s pretty simple, the SDK comes with a tool to make the 9-patch image, and it involves absolutely no coding.

user avatar

The drawable folder, under res, in an Android project is not restricted to bitmaps (PNG or JPG files), but it can also hold shapes defined in XML files.

These shapes can then be reused in the project. A shape can be used to put a border around a layout. This example shows a rectangular border with curved corners. A new file called customborder.xml is created in the drawable folder (in Eclipse use the File menu and select New then File, with the drawable folder selected type in the file name and click Finish).

The XML defining the border shape is entered:

The attribute android:shape is set to rectangle (shape files also support oval, line, and ring). Rectangle is the default value, so this attribute could be left out if it is a rectangle being defined. See the Android documentation on shapes at http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape for detailed information on a shape file.

The element corners sets the rectangle corners to be rounded. It is possible to set a different radius on each corner (see the Android reference).

The padding attributes are used to move the contents of the View to which the shape is applied, to prevent the contents overlapping the border.

The border color here is set to a light gray (CCCCCC hexadecimal RGB value).

Shapes also support gradients, but that is not being used here. Again, see the Android resources to see how a gradient is defined. The shape is applied to the laypout using android:background=»@drawable/customborder» .

Within the layout other views can be added as normal. In this example, a single TextView has been added, and the text is white (FFFFFF hexadecimal RGB). The background is set to blue, plus some transparency to reduce the brightness (A00000FF hexadecimal alpha RGB value). Finally the layout is offset from the screen edge by placing it into another layout with a small amount of padding. The full layout file is thus:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *