![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Определение интерфейса в файле XML. Файлы layout
В приложениях Android визуальный интерфейс нередко загружается из специальных файлов xml, которые хранят разметку. Эти файлы являются ресурсами разметки. Подобный подход напоминает создание веб-сайтов, когда интерфейс определяется в файлах html, а логика приложения - в коде javascript. Объявление пользовательского интерфейса в файлах XML позволяет отделить интерфейс приложения от кода. Что означает, что мы можем изменять определение интерфейса без изменения кода java. Например, в приложении могут быть определены разметки в файлах XML для различных ориентаций монитора, различных размеров устройств, различных языков и т.д. Кроме того, объявление разметки в XML позволяет легче визуализировать структуру интерфейса и облегчает отладку. Файлы разметки графического интерфейса располагаются в проекте в каталоге 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: layout_width=" match_parent" android: layout_height=" match_parent" tools: context=" com.example.eugene.viewsapplication.MainActivity" > < TextView android: layout_width=" wrap_content" android: layout_height=" wrap_content" android: text=" Hello World! " app: layout_constraintBottom_toBottomOf=" parent" app: layout_constraintLeft_toLeftOf=" parent" app: layout_constraintRight_toRightOf=" parent" app: layout_constraintTop_toTopOf=" parent" /> < /android.support.constraint.ConstraintLayout>В файле определяются все графические элементы и их атрибуты, которые составляют интерфейс. При создании разметки в XML следует соблюдать некоторые правила: каждый файл разметки должен содержать один корневой элемент, который должен представлять объект View или ViewGroup. В данном случае корневым элементом является элемент ConstraintLayout, который содержит элемент TextView. При компиляции каждый XML-файл разметки компилируется в ресурс View. Загрузка ресурса разметки осуществляется в методе Activity.onCreate. Чтобы установить разметку для текущего объекта activity, надо в метод setContentView в качестве параметра передать ссылку на ресурс разметки. Для получения ссылки на ресурс в коде java необходимо использовать выражение R.layout.[название_ресурса]. Название ресурса layout будет совпадать с именем файла, поэтому чтобы использовать файл activity_main.xml в качестве источника визуального интерфейса, нам надо изменить код MainActivity следующим образом: package com.example.eugene.viewsapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}Добавление файла layout Но у нас может быть и несколько различных ресурсов layout. Как правило, каждый отдельный класс Activity использует свой файл layout. Либо для одного класса Activity может использоваться сразу несколько различных файлов layout. К примеру, добавим в проект новый файл разметки интерфейса. Для этого нажмем на папку res/layout правой кнопкой мыши и в появившемся меню выберем пункт New -> Layout resource file: После этого в специальном окошке будет предложено указать имя и корневой элемент для файла layout: В качестве названия укажем second_layout, а в качестве типа корневого элемента оставим LinearLayout. После этого в папку res/layout будет добавлен новый файл second_layout.xml, с которым мы можем работать точно также, как и с activity_main.xml. В частности, откроем файл second_layout.xml и изменим его содержимое следующим образом: <? xml version=" 1.0" encoding=" utf-8"? > < LinearLayout xmlns: android=" http: //schemas.android.com/apk/res/android" android: orientation=" vertical" android: layout_width=" match_parent" android: layout_height=" match_parent" > < TextView android: id=" @+id/header" android: text=" Second Activity" android: textSize=" 26dp" android: layout_width=" wrap_content" android: layout_height=" wrap_content" /> < /LinearLayout>Здесь определено текстовое поле TextView, которое выводит на экран простейший текст " Second Activity". |
Последнее изменение этой страницы: 2019-05-04; Просмотров: 352; Нарушение авторского права страницы