Публикации - Mobile Operating Systems

Android - Widgets

Экнш onCreate запускает на выполнение представление из файла res/layout/activity_main.xml. Это главный файл представления, и в нем определяется относительное расположение компонентов.

За расположение элементов на экране отвечают виджеты и атрибуты виджетов.

Сперва рассмотрим основные виды Layout, т. к. эти виджеты являются корневыми:

LinearLayout. Отображает view-элементы ввдите одной строки, если он Horizontal и ввиде одного столбца, если он Vertical.

TableLayout. Отображает элементы ввиде таблицы по строкам и столбцам.

RelativeLayout. Для каждого элемента настраивается его положение относительно других элементов.

AbsoluteLayout. Для каждого элемента настраивается его явная позиция в системе координат по x и y.

FrameLayout.

Каждый из этих элементов может располагаться внутри другого, а также содержать множество других view-элементов.

View-элементы

Создать любой виджет можно и не зная его кода. Для этого нужно кликнуть по его названию в панели виджетов.

Чтобы сгенерировать идентификатор ресурса для виджета, необходимо добавить для него атрибут adnroid:id.

Добавление идентификатора ресурса для виджета. Листинг 1.

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/myid"
android:id="@+id/textView" />

Обратите внимание на знак +, присутствующий в значениях android:id. Это значит, что мы создаем идентификаторы. В атрибуте android:text мы ссылаемся на уже созданный ранее в строковом файле идентификатор с именем myid.

Когда виджетам назначены идентификаторы ресурсов, к ним можно обращаться в классах активностей. Для этого используется метод Activity.

public View findViewById(int id);

Метод получает идентификатор ресурса виджета и возвращает объект View.

Обращение к виджетам в классе активности. Листинг 1.

public class MainActivity extends AppCompatActivity {

private Buttom mTrueButtom;

@override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

mTrueButtom = (Buttom) findViewById(R.id.buttom);

setContent(R.layout.activity_main);

}

}

Layout_width и Layout_height – для определения ширины и высоты. Используются следующие единицы измерения:

dp (density-independent pixels) – абстрактная единица измерения, позволяющая приложениям выглядеть одинаково на различных экранах и разрешениях.

sp (scale-independent pixels) – то же, что и dp, но используется для размеров шрифта в View элементах.

pt – 1/72 дюйма, определяется по физическому размеру экрана. Эта единица измерения из типографии.

mm – миллиметр, определяется по физическому размеру экрана.

in – дюйм, определяется по физическому размеру экрана.

Кроме единиц измерения, используются следующие значения:

match_parent (fill_parent) – означает, что элемент займет всю доступную ему ширину или высоту в родительском элементе.

wrap_content – ширина или высота контейнера определяется его содержимым.

Layout_gravity – используется для выравнивания. Возможны варианты: top, bottom, left, right, center.

Layout_margin – используется для определения отступов.

Textstyle – используется для определения стиля тектста. Возможны следующие значения.

  • normal;

  • bold;

  • italic.

Пример установки стиля через атрибуты:

android:textStyle="bold";

Рассмотрим преобразованный файл представления activity_main.xml.

Файл activity_main.xml. Листинг 1.

xml version="1.0" encoding="utf-8"?>
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="by.colony.mikhalkevich.android.MainActivity"
android:nestedScrollingEnabled="true"
android:id="@+id/Main">

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Конфигуратор модели"
android:id="@+id/textView" />

android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/droidImageView"
android:src="@drawable/ic_launcher"
android:layout_below="@+id/categories"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="74dp" />

android:id="@+id/categories"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:entries="@array/category"
android:layout_marginTop="23dp"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_name"

android:layout_gravity="bottom|right"
android:id="@+id/button"
android:layout_below="@+id/categories"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
RelativeLayout>

  • Открывающий тег XML устанавливает различные атрибуты RelativeLayout, в частности кодировку и версию приложения.

  • атрибут xmlns, который указывает все элементы в документе, относящиеся к пространству имен android XML. Этот атрибут обязателен для указания и автоматически генерируется IDE при создании любого файла XML-разметки.

  • RelativeLayout является корневым узлом документа XML. Значение match_parent для атрибутов android:layout_width и android:layout_height. В результате макет занимает всю высоту и ширину родительского элемента макета (элемента, в который вложен данный макет).

  • Атрибут android:id = ‘@+id/Main’ предназначен для присвоения уникального id элементу.

  • Атрибут android:text = ‘@string/name’ выводит переменные из файла strings.xml.

  • Атрибут android:entries = ‘@array/category’ элемента spinner обращается к массиву category.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться