Разбираем макет-ограничитель

Открыта

Прежде чем перейти к следующему уроку, мы хотим обратить Ваше внимание на новый вид макета в Android Studio — макет-ограничитель или ConstraintLayout. Вам придется немного изменить свой код, в следующих уроках мы покажем, как именно.

Держим нос по ветру

Google постоянно совершенствует платформу Андроид и добавляет новые возможности. Они облегчают жизнь разработчиков, но усложняют процесс обучения. Недавно Google разработал ConstraintLayout, этот инструмент позволяет быстро создавать отзывчивый интерфейс с большим количеством компонентов. Такой козырь неплохо держать в рукаве, но в нашем курсе мы предпочли более традиционные макеты — относительный и линейный.

Мы упомянули об этом, потому что новые шаблоны проектов в Android Studio используют макет-ограничитель по умолчанию, из-за чего код у Вас на экране может отличаться от нашего.

Файл макета по умолчанию

В последних версиях Android Studio при выборе шаблона Empty Activity файл макета app/src/main/res/layout/activity_main.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.udacity.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        app:layout_constraintTop_toTopOf="@+id/activity_main"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        app:layout_constraintBottom_toBottomOf="@+id/activity_main" />

 </android.support.constraint.ConstraintLayout>

Как видите, тут использован ConstraintLayout, в котором положение TextView зафиксировано ограничителями.

Меняем файл макета

В отличие от приведенного выше примера кода, в наших уроках код по умолчанию выглядит так, как в следующем примере — с корневым элементом RelativeLayout.

<??xml version="1.0" encoding="utf-8"?>
<?RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.udacity.myapplication.MainActivity">

    <?TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
<?/RelativeLayout>

При создании нового проекта, откройте файл app/src/main/res/layout/activity_main.xml и вставьте в него этот код. Теперь можно работать!

Если хотите основательно изучить новые возможности макета ConstraintLayout, почитайте документацию на сайте.