1.3. Создание простого пользовательского интерфейса Andoid Studio

В этом уроке рассматривается:

  • как открыть Layout Editor (редактор макета)
  • как добавить текстовое поле (Text Box)
  • как добавить кнопку (Button)
  • изменение строк в пользовательском интерфейсе
  • как сделать размер текстового поля гибким.

В этом уроке вы будете использовать редактор макета Android Studio для создания макета На макете мы разместим  текстовое поле и кнопку. На следующем уроке сделаем так, что приложение будет реагировать на нажатие кнопки, посылая содержимое текстового поля другой активности (Activity).

Пользовательский интерфейс для Android-приложения построен с использованием иерархии макетов (объектов ViewGroup) и виджетов (View objects). Макеты — это невидимые контейнеры, которые определяют, как его дочерние представления (Views — вьюшки) располагаются на экране. Виджеты — это компоненты пользовательского интерфейса, такие как кнопки и текстовые поля.

 

Android предоставляет словарь XML для классов ViewGroup и View, поэтому большая часть вашего пользовательского интерфейса определена в XML-файлах. Однако вместо того, чтобы научить вас писать какой-либо XML, этот урок показывает вам, как создать макет с помощью редактора макетов Android Studio, что упрощает создание макета с помощью перетаскиваемых представлений (Вьюшек).

Откройте Layout Editor (редактор макета)

Примечание. Этот урок предполагает, что вы используете Android Studio 3.0, и вы выполнили предыдущий урок, чтобы создать свой Android-проект.

 

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

  1. В окне проекта Android Studio откройте app (приложение) -> res -> layout -> activity_main.xml.
  2. Чтобы редактор макета занимал больше места, скройте окно «Проект», выбрав View > Tool Windows > Project («Вид» -> «Инструменты»-> «Проект») (или щелкните Project  («Проект») в левой части Android Studio).
  3. Если ваш редактор показывает источник XML, откройте вкладку Design («Дизайн») в нижней части окна.
  4. Нажмите Select Design Surface  («Выбрать проектную поверхность») и выберите Blueprint.
  5. Нажмите Show  («Показать») на панели инструментов и убедитесь, что Show Constraints («Показать ограничения») отмечен.
  6. Убедитесь, что Autoconnect выключен. На всплывающей подсказке на панели инструментов следует включить Turn On Autoconnect  (это значит, что он выключен).
  7. Нажмите Default Margins  («Поля по умолчанию») на панели инструментов и выберите 16 (вы все равно можете настроить отступы для каждого вида позже).
  8. Нажмите   Device in Editor  («Устройство в редакторе») на панели инструментов и выберите «Pixel XL».
    Теперь ваш редактор должен выглядеть так, как показано на рисунке ниже.

Окно Component Tree в нижней левой части показывает иерархию представлений (Вьюшек) макета. В этом случае корневой вид представляет собой ConstraintLayout, содержащий только один объект TextView.

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

Например, вы можете объявить следующий макет:

— View A располагается на 16dp ниже от верхней части родительского макета.
— View A располагается на 16dp слева от родительского макета.
— View В располагается на 16dp справа от View A.
— View В выровнен по верхней границе View A.

В следующих разделах вы создадите макет, подобный этому.

Добавляем текстовое поле (Text Box)

  1. Сначала удалим то, что уже находится в макете. Поэтому нажмите «TextView» в окне Component Tree («Дерево компонентов»), а затем нажмите Delete («Удалить»).
  2. В окне Palette («Палитра») слева нажмите Text («Текст») в левой панели, а затем перетащите Plain Text («Обычный текст») в редактор проекта и поместите его в верхней части макета. Это виджет EditText, который принимает обычный ввод текста.
  3. Щелкните по представлению в редакторе проекта. Теперь вы можете увидеть границы изменения размера на каждом углу (квадраты) и привязки ограничений на каждой стороне (круги).  Для лучшего управления вам может потребоваться увеличить масштаб редактора, используя кнопки на панели инструментов.
  4. Нажмите и удерживайте якорь на верхней стороне, а затем перетащите его вверх, пока он не защелкнется до верхней части макета и не отпустит. Это ограничение — оно указывает, что представление должно быть 16dp из верхней части макета (поскольку вы устанавливаете значения по умолчанию 16dp).
  5. Аналогичным образом создайте ограничение с левой стороны вида в левой части макета.

Результат должен выглядеть как скриншот на рисунке.

Добавляем кнопку

  1. В окне Palette («Палитра») нажмите Widgets («Виджеты») на левой панели, а затем перетащите Button («Кнопка») в редактор проекта и поместите ее рядом с правой границей.
  2. Создайте ограничение с левой стороны кнопки в правой части текстового поля.
    Чтобы ограничить представления в горизонтальном направлении, вам необходимо выровнять две базовые линии (линии под текстами) вьюшек. Итак, нажмите кнопку, а затем нажмите  Edit Baseline  («Изменить базовую линию»), которая появляется в редакторе дизайна непосредственно под выбранной вьюшкой. Внутри кнопки появляется базовый якорь. Нажмите и удерживайте этот якорь, а затем перетащите его в базовый якорь, который появляется в текстовом поле.
    Результат должен выглядеть как скриншот на рисунке .

Примечание. Вы также можете создать горизонтальное выравнивание с использованием верхнего или нижнего края, но это не совсем верное выравнивание.

Измените строки пользовательского интерфейса

Чтобы посмотреть как же будет выглядеть пользовательский интерфейс, нажмите  Select Design Surface   («Выбрать отображение поверхности») на панели инструментов и выберите  Design («Дизайн»). Обратите внимание, что ввод текста предварительно заполнен словом«Name», а кнопка обозначается как «Button». Итак, теперь узнаем как изменить эти строки.

  1. Откройте окно Project и откройте app -> res -> values -> strings.xml.
    Это файл строковых ресурсов, где вы должны указать все свои строки пользовательского интерфейса. Этот файл позволяет управлять всеми строками UI в одном месте, что упрощает поиск, обновление и локализацию (по сравнению с строками жесткого кодирования в макете или коде приложения).
  2. Нажмите Open editor («Открыть редактор») в верхней части окна редактора. Это открывает Translations Editor (редактор переводов), который предоставляет простой интерфейс для добавления и редактирования строк по умолчанию и помогает сохранить все переведенные строки.
  3. Нажмите Add Key  («Добавить ключ»), чтобы создать новую строку в качестве «текста подсказки» («hint text») для текстового поля.
    1. Введите «edit_message» для имени ключа.
    2. Введите фразу «Введите сообщение» для значения.
    3. Нажмите «ОК».

4. Добавьте еще один ключ с именем «button_send» со значением «Отправить».

Теперь вы можете установить строки для соответствующих вьюшек. Поэтому вернитесь к файлу макета, нажав на Activity_main.xml на панели вкладок и добавьте строки следующим образом:

  1. Щелкните текстовое поле в макете и, если окно атрибутов уже не видно справа, нажмите Attributes («Атрибуты») на правой боковой панели.
  2. Найдите свойство text текста (в настоящее время установлено значение «Имя») и удалите значение.
  3. Найдите свойство hint подсказки и нажмите Pick a Resource  («Выбрать ресурс») справа от текстового поля. В появившемся диалоговом окне дважды щелкните по элементу edit_message из списка.
  4. Теперь нажмите кнопку в макете, найдите свойство text текста, нажмите  Pick a Resource  («Выбрать ресурс»), а затем выберите button_send.

Измените строки пользовательского интерфейса

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

Прежде чем продолжить, нажмите Show  («Показать») на панели инструментов и выберите «Blueprint».

 

  1. Выберите обе вьюшки (нажмите на одну и, удерживая Shift, выберите вторую), а затем щелкните правой кнопкой мыши или выберите Chain -> Create Horizontal Chain («Цепочка»-> «Создать горизонтальную цепочку»). Цепь представляет собой двунаправленное ограничение между двумя или более вьюшками, которое позволяет вам выложить цепочку в один ряд.

2. Выберите кнопку (button) и откройте окно Attributes («Атрибуты»). Используя привязку в верхней части окна «Атрибуты», установите для правого поля значение 16.

3. Теперь щелкните текстовое поле, чтобы просмотреть его атрибуты. Дважды щелкните индикатор ширины, чтобы установить значение Match Constraints («Сопоставление ограничений»), как указано выводом 1 на рисунке.
«Match constraints» означают, что ширина расширяется, чтобы соответствовать определению горизонтальных ограничений и полей. Поэтому текстовое поле растягивается, чтобы заполнить горизонтальное пространство (после учета кнопки и всех полей).
Теперь макет сделан и должен выглядеть так:

Если кажется, что ваш макет не получился так, как ожидалось, посмотрите ниже, чтобы увидеть, как должен выглядеть ваш XML и сравнить его с тем, что вы видите на вкладке «Текст». (Если ваши атрибуты отображаются в другом порядке, все в порядке.)

См. Окончательный формат XML

xml version="1.0" encoding="utf-8"?>

    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.myfirstapp.MainActivity">

    
        android:id="@+id/editText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:hint="@string/edit_message"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toStartOf="@+id/button"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:text="@string/button_send"
        app:layout_constraintBaseline_toBaselineOf="@+id/editText"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/editText" />

Для получения дополнительной информации о цепочках и всех других вещах, которые вы можете сделать с помощью ConstraintLayout, прочитайте «Постройте адаптивный пользовательский интерфейс с помощью ConstraintLayout».

Запустить приложение

Если ваше приложение уже установлено на устройстве из предыдущего урока, просто нажмите Apply Changes  («Применить изменения») на панели инструментов, чтобы обновить приложение с помощью нового макета. Или нажмите  Run  («Запустить»), чтобы установить и запустить приложение.

Кнопка все еще ничего не делает. Переходите к следующему уроку.

You may also like...

63 комментария

  1. deadstunt:

    Тестути

  2. Buy Cialis Legally Online 438 Amoxil Suspension buy viagra online Levitra Long Term Effects Viagra A Basso Prezzo Ampicillin

  3. Acheter Du Viagra Super Actif Can I Purchase Elocon 0.1% Cialis 2.5 Mg cialis canada Tadalafil Sale Prezzo Viagra Svizzera Order Tadalis Sx Soft Visit Your Doctor Online

  4. Code Propecia Buy Uk Hair Follicles cialis without a doctor’s prescription Viagra Rembourse

  5. Cialis No Effect Buy Propecia Without Prescription Oral Amoxicillin Versus Oral Penicillin viagra online Amoxicillin And Dosing Sildenafil Citrate No Prescription

  6. Cialis 5 Mg Quanto Costa Buy Amoxicillin 500mg cialis Where Can I Buy Effexor Xr Buy Amoxicillin Without Rx

  7. Viagra Se Vende Libre Great Britain Domperidone cheap levitra canada Viagra 25 Ans Viagra Bei Bluthochdruck

  8. Amoxicillin For Dogs Colds Prix Levitra Suisse Cialis In Turkei Kaufen viagra Generic Propecia Prescription

  9. Metronidazole Pills Online Overnight Amoxicillin Good For Prosthesis canadian cialis Bentyl Website Without Perscription

  10. Priligy Vendo Inde Viagra Shop Schweiz Propecia Mcg viagra El Amoxil

  11. Chewable Visgra how to get zoloft without prescription Priligy Eli Lilly Clomid Effets Secondaires Duphaston Buying Lasix

  12. Cialis El Pais Blood Pressure Pills No Rx viagra online prescription Viagra Vente Libre Paris

  13. Meilleur Viagra Generique Amoxicillin Advil Interaction cialis canada Find Generic Dutasteride In Canada Cash On Delivery

  14. Cialis Generico Soft Precio De La Cialis viagra prescription Bactrim Ds Fors Sale Comprar Viagra Por Internet Propecia Prostate Cancer Prevention

  15. Viagra Hard Tumblr cheapest cialis Retail Price Of Levitra Cialis Tadalafil Pas Cher

  16. Amazon Propranolol generic cialis from india Buy Zithromax Overnight Delivery

  17. Trusted Tablets Buy Vigora Usa Buy Disulfiram cialis Cialis 20mg Lilly Acheter

  18. Purchase Generic Propecia Zithromax And Coumadin Interaction viagra Cialis Dipendenza Kamagra Generique Buy Online Prescription Viagra

  19. Come Comprare Priligy Cortef No Prescription Best Site For Cialis online pharmacy Cheap Xenical Tablets

  20. Kamagra Oral Jelly 5gm Sildenafil Prix Du Cialis 20 En Pharmacie Priligy Nouvelle generic cialis overnight delivery Cialis Test Levitra Prix Allemagne

  21. Also visit my website free viagra

  22. The Best Generic Viagra Online viaonlinebuy.us — Where Is The Best Place To Buy Generic Viagra Online

  23. Safe Generic Viagra Online buy viagra online — Buy Cheap Generic Viagra

  24. Best Online Site For Generic Viagra https://www.viaonlinebuy.us/ — female viagra — Generic Viagra Prescription

  25. Best Place Buy Generic Viagra viaonlinebuy.us — Generic Viagra Safe

  26. The Best Generic Viagra viagra pill — Pfizer Viagra Generic

  27. Buy Generic Viagra https://www.viaonlinebuy.us/ — female viagra — Real Generic Viagra Online

  28. Best Site For Generic Viagra viaonlinebuy.us — Buy Generic Viagra 100mg

  29. Generic Viagra Soft Tabs viagra 100mg — Generic Viagra 100

  30. Discount Generic Viagra https://www.viaonlinebuy.us/ — viagra 100mg — Discount Generic Viagra

  31. Generic Viagra In Canada viagraxcv.com — When Viagra Generic Available

  32. Generic Viagra Brands viaonlinebuy.us — Generic Viagra 25mg

  33. Generic Viagra Overnight Delivery generic viagra — Where To Get Generic Viagra

  34. Best Generic Viagra Online viagra for men — Generic Viagra Pharmacy

  35. Cheap Generic Viagra Online Pharmacy https://www.viagraxcv.com/ — generic viagra — Generic Viagra Sildenafil Citrate 100mg

  36. Where To Order Generic Viagra https://www.viaonlinebuy.us/ — generic viagra — Where To Buy Viagra Generic

  37. Generic Viagra Paypal viagraxcv.com — Generic Sildenafil Viagra

  38. Where To Buy Generic Viagra viaonlinebuy.us — Price For Generic Viagra

  39. Lowest Cost Generic Viagra viagraxcv.com — Where Can I Get Generic Viagra

  40. Can You Buy Generic Viagra female viagra — Generic Viagra Online Purchase

  1. 19.08.2019

    viagra tablets

    viagra tablets

  2. 19.08.2019

    generic viagra 100mg

    generic viagra 100mg

  3. 19.08.2019

    generic cialis at walmart

    generic cialis at walmart

  4. 19.08.2019

    sildenafil

    sildenafil

  5. 19.08.2019

    cheap viagra

    cheap viagra

  6. 19.08.2019

    viagra for sale

    viagra for sale

  7. 20.08.2019

    buy generic cialis

    buy generic cialis

  8. 20.08.2019

    generic viagra

    generic viagra

  9. 20.08.2019

    generic cialis

    generic cialis

  10. 24.08.2019

    sildenafil citrate

    sildenafil citrate

  11. 24.08.2019

    viagra coupons

    viagra coupons

  12. 24.08.2019

    generic cialis tadalafil

    generic cialis tadalafil

  13. 24.08.2019

    viagra prices

    viagra prices

  14. 24.08.2019

    cialis generic

    cialis generic

  15. 25.08.2019

    viagra without doctor prescription

    viagra without doctor prescription

  16. 25.08.2019

    cialis cost

    cialis cost

  17. 25.08.2019

    viagra generic

    viagra generic

  18. 27.08.2019

    viagra without a doctor prescription

    viagra without a doctor prescription

  19. 28.08.2019

    generic viagra available

    generic viagra available

  20. 28.08.2019

    cialis pills

    cialis pills

  21. 28.08.2019

    viagra 100mg

    viagra 100mg

  22. 28.08.2019

    sildenafil generic

    sildenafil generic

  23. 28.08.2019

    tadalafil generic

    tadalafil generic

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

Ваш e-mail не будет опубликован.

Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
Регистрация не требуется. В качестве логина укажите рабочую почту, в качестве пароля - пароль от компьютера.