Как сделать отступ android studio

Обновлено: 04.07.2024

Продолжаем изучать основы разработки приложений с использованием языка Kotlin.

Это уроки по основам разработки, и мы еще не дошли до собственно программирования на языке Kotlin, поскольку разработка приложений – это не только программирование. В этом уроке мы рассмотрим ресурсы приложения, а также создадим макеты для экранов приложения. Писать программные конструкции на языке Kotlin мы начнем в следующем уроке.

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

1 . Редактор макета в Android Studio

Каждый элемент в макете представляет собой view, или представление. В этой задаче изучим интерфейс редактора макетов в Android Studio и разберемся, как изменять значения свойств для view.

Что вы узнаете

  • Как использовать редактор макетов.
  • Как установить значения свойств.
  • Как добавить строковые ресурсы.
  • Как добавить цветовые ресурсы.

Откройте редактор макета

Изучите и измените размер дерева компонентов

Исследуйте иерархии представлений view

  1. В дереве компонентов обратите внимание, что корень иерархии представлений view представляет собой компонент разметки ConstraintLayout.Каждый макет должен иметь корневой view, содержащий все остальные view. Корневой view всегда представляет собой группу представлений ViewGroup, которая представляет собой view, которое содержит другие view. ConstraintLayout — один из примеров группы представлений ViewGroup. Его название содержит слово constraint – ограничения, и это отражает суть взаимодействия элементов, добавляемых в этот корневой view. Познакомится с другими корневыми элементами разметки, такими как RelativeLayout, LinearLayout и другими можно по ссылкам в описании видео. /linearlayout-i-relativelayout-osobennosti-maketov-ekranov-android/

Далее в этом уроке мы рассмотрим работу с ConstraintLayout более подробно.

У меня есть TextView, и я хотел бы добавить черную рамку вдоль ее верхней и нижней границ. Я попытался добавить android:drawableTop и android:drawableBottom к TextView, но это только заставило весь вид стать черным.

Есть ли способ легко добавить верхнюю и нижнюю границу к представлению (в частности, к TextView) в Android?

В Android 2.2 вы можете сделать следующее.

Создайте отрисовываемый файл XML, например /res/drawable/textlines.xml, и назначьте его в качестве свойства фона TextView.

@emmby: при тестировании этого кода на планшете требуется время для рендеринга на экране, через 1 секунду при прокрутке отображаются границы

Трюк android: color = "@ null" не помог мне сохранить прозрачность и просто отобразить границу с одной стороны вида. Ответ от user1051892 ниже сделал свою работу!

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

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

красиво сделано! то, что вы должны смотреть, это элемент слева, сверху, справа, снизу следует - (ширина обводки) dp

Красиво сделано, работает с прозрачным фоном. Проверено в 2.2 и 4.4.2. Должен охватить все промежуточное :)

Это самый простой вариант, если вам нужна рамка вокруг макета или вида, в которой вы можете установить фон. Создайте файл XML в drawable папке, которая выглядит примерно так:

Вы можете удалить, solid если вы не хотите заполнять. Набор background="@drawable/your_shape_drawable" на ваш макет / вид.

Вот маленький трюк, который я использовал в RelativeLayout . По сути, у вас есть черный квадрат под видом, который вы хотите задать рамку, а затем дать этому виду некоторый отступ (не отступ!), Чтобы черный квадрат просвечивал по краям.

Очевидно, что это работает правильно, только если у вида нет прозрачных областей. Если это произойдет, я бы порекомендовал вам написать кастом, BorderView который рисует только границу - это должно быть всего несколько десятков строк кода.

Если вам интересно, что делает работу с adjustViewBounds=true . Тем не менее, это не работает, если вы хотите иметь фон целиком RelativeLayout , потому что есть ошибка, которая мешает вам заполнить RelativeLayout с View . В этом случае я бы порекомендовал Shape Drawable.

Последний вариант - использовать 9-патч, как этот:


Вы можете использовать его в любом представлении, где вы можете установить android:background="@drawable/. " . И да, это должно быть 6х6 - я пробовал 5х5, и это не сработало.

Недостаток этого метода в том, что вы не можете изменить цвета очень легко, но если вам нужны причудливые границы (например, только границы сверху и снизу, как в этом вопросе), то вы не сможете сделать их с помощью Shape рисования. , который не очень мощный.

Я забыл упомянуть этот действительно простой вариант, если вы хотите, чтобы границы только выше и ниже вашего обзора. Вы можете поместить свой вид по вертикали LinearLayout (если это еще не так), а затем добавить пустые View s над и под ним, например:

9 патч и нарисованная форма в порядке, но я бы рекомендовал не добавлять виды или изображения для решения такой проблемы. Причина в том, что вы должны удалить как можно больше таких из ваших макетов, чтобы улучшить их перерисовку и анимацию. Я бы сразу же убрал их и реализовал нечто подобное варианту 1 или 2.

@Emile Это правда, но если вы используете пользовательский ListView, который не поддерживает разделители, простой View подойдет. Влияние на производительность практически равно нулю, особенно если вы уверены, что сохраните глубину макета. Это также позволяет обойти ошибки, связанные с разделителями ListView между устройствами (я видел некоторые устройства, которые игнорируют это свойство).

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

В iOS у вас есть только один способ сделать это. На Android вы должны протестировать как минимум четыре, в моем случае вариант 4 был путь. Иногда рисовать как фон висят, чтобы знать, об этом.

Почему у андроида не было самого простого решения для таких вещей? как и в других языках, таких как HTML, CSS или что-то JavaFX, WPF .

Для просмотра TextView или добавления добавьте:

И в drawable каталоге добавьте следующий XML, называемый borderbottom.xml

Если вы хотите границы в верхней части, изменить android:top="-2dp" к android:bottom="-2dp"

Цвет не обязательно должен быть белым, а фон не обязательно должен быть прозрачным.

solid Может не быть необходимым элементом. Это будет зависеть от вашего дизайна (спасибо В. Калюжню).

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

Есть ли причина, по которой отрицательные позиции в два раза больше, чем ход ( -2dp против 1dp )? Кажется, работает, когда они равны по количеству ( -1 и 1 ).

@DenisKniazhev: При использовании -2dp результат всегда был чистым. Я думаю, что был тестовый случай, где результат не был чистым. Я не могу вспомнить, был ли это экран с низкой или высокой плотностью или даже более старая версия Android (возможно, 2.x).

Интересно. Знаете ли вы, если это общий случай, например, если я использую 4dp для ширины хода, я должен использовать -8dp для позиционирования?

@DenisKniazhev: (из памяти) это выглядело как вычисление с плавающей запятой, которое было немного большим или маленьким. Это означает, что значением -5dp будет все, что нужно со значением ширины 4pd . Просто нужно быть немного больше, чтобы преодолеть неточность значения с плавающей точкой.

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

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

У меня есть TextView, который отображает длинный текст. Я хочу дать некоторое пространство между строками, как в CSS с помощью свойства line-height. Как я могу это сделать?

Вы можете использовать lineSpacingExtra и lineSpacingMultiplier в вашем XML файле.

вы можете посмотреть android:lineSpacingExtra и применить его к XML

или связанный с ним метод public void setLineSpacing (float add, float mult)

Если вы хотите отступы между текстом, попробуйте LineSpacingExtra="10dp"

Вы можете использовать функцию TextView.setLineSpacing(n,m) .

Добавление android:lineSpacingMultiplier="0.8" может сделать интервал между линиями до 80%.

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

Вы можете установить множитель и/или дополнительный интервал с помощью

Или вы можете получить значения с помощью

Умножитель по умолчанию – 1 , а дополнительный интервал по умолчанию – 0 .

Решение простое. просто используйте эти два атрибута в ваших TextView , lineSpacingExtra и lineSpacingMultiplier

Есть ли способ/ярлык/встроенная функция, которая может выровнять код для операндов, таких как знаки '='?

В Android Studio есть функция группы полей, которая может "выравнивать по столбцам", но она не работает для уже написанного кода.

Код отступа в Android Studio:

Windows

Mac:

Хорошо работает на уровне файлов, но мне интересно, есть ли способ сделать изменение для всего проекта или даже лучше сделать это автоматически, когда я открываю проект? Upvoted

В Eclipse, который поставляется с Android Studio Bundle, комбинация клавиш для запуска Auto Formatter выглядит следующим образом:

Если вы хотите изменить эту комбинацию, перейдите в меню "Настройки" → "Таблица ключей" и выберите "Пользовательский".

Да. Keymap по умолчанию. использование ярлыка вызывает код переформатирования, но он не переформатирует код. знак = не выравнивает объявления переменных для выбранного кода.

Выравнивание для объявлений переменных работает только для тех, которые находятся за пределами функций. Функция выравнивания в меню "Предпочтения" → "Стиль кода" → "Обтекание и фигурные скобки" → "Группы полей" → "Выровнять по столбцам" не работает для тех, кто находится внутри скобок/фигурных скобок.

Эта функция доступна, но еще не в стабильной версии. Доступен в сборке: 140.1761

На момент написания этого ответа моя текущая сборка "Стабильная версия" была 135.1653844, построена 18 декабря 2014 года.

Читайте также: