WEBVTT
00:00:00.450 --> 00:00:03.650
Прежде чем начать с кодами, я отвечу
на этот вопрос.
00:00:03.650 --> 00:00:07.460
Я пока что знаю только о двух группах
элементов, LinearLayouts и
00:00:07.460 --> 00:00:08.626
RelativeLayouts.
00:00:08.626 --> 00:00:13.710
Ключевым тут было то, что эти группы
должны занимать равное пространство.
00:00:13.710 --> 00:00:16.260
Это легко сделать,
использовуя вес панели.
00:00:17.480 --> 00:00:20.070
ну что ж, давайте посмотрим на код.
00:00:20.070 --> 00:00:22.880
Я больше не буду работать в Java,
поэтому я перейду
00:00:22.880 --> 00:00:24.775
к файлу activity_main.xml.
00:00:25.830 --> 00:00:27.150
А вот мой XML файл.
00:00:28.270 --> 00:00:33.875
Начну с того, что внесу весь этот
код в другой LinearLayout.
00:00:33.875 --> 00:00:38.334
Это родительский элемент LinearLayout
для двух моих мини LinearLayouts.
00:00:39.360 --> 00:00:43.900
Я передвину эти две строки сюда
вверх, потому что они
00:00:43.900 --> 00:00:49.670
должны быть присоединены к корневому
элементу, добавим закрывающую скобку.
00:00:49.670 --> 00:00:53.990
Android Studio автоматически сделало
для меня закрывающий тэг вот здесь.
00:00:53.990 --> 00:00:55.060
Так что я сейчас
00:00:55.060 --> 00:00:59.370
вырежу этот закрывающий тэг,
прокручу вниз и вставлю его.
00:01:01.160 --> 00:01:06.450
Так появилась красная волнистая линия
и если я посмотрю на ошибку, я увижу,
00:01:06.450 --> 00:01:10.660
что мне предлагают определить высоту
layout_height и ширину layout_width.
00:01:10.660 --> 00:01:12.040
Ой! Что ж, давайте так и сделаем.
00:01:13.210 --> 00:01:17.580
Это корневой элемент, я пропишу
соответствие match_parent.
00:01:20.050 --> 00:01:21.140
Хорошо. Итак.
00:01:21.140 --> 00:01:25.610
У меня есть один LinearLayout, окру-
жающий дочернюю запись LinearLayout.
00:01:25.610 --> 00:01:30.500
И если зайти в предпросмотр,
выглядит почти так же.
00:01:30.500 --> 00:01:35.510
Ладно, я сделаю вот что: я
скопирую все в
00:01:35.510 --> 00:01:41.100
LinearLayout команды А, и сразу же
под командой А это вставлю.
00:01:42.160 --> 00:01:47.026
Это будет LinearLayout для команды Б.
00:01:47.026 --> 00:01:52.209
Вот теперь записи выглядят
немного неорганизованно.
00:01:52.209 --> 00:01:57.264
Поэтому я сделаю Cmd+A, или
выбрать все, а потом
00:01:57.264 --> 00:02:03.520
воспользуюсь сочетанием клавиш
Cmd+Option+L для переформатирования.
00:02:03.520 --> 00:02:07.930
В среде Windows, то же действие на
Ctrl+Alt+L. Так выглядит лучше.
00:02:07.930 --> 00:02:11.560
Теперь я хочу убедиться в том, что вы
понимаете, что тут происходит.
00:02:11.560 --> 00:02:16.640
Проматываю вверх, тут у меня
корневой LinearLayout.
00:02:16.640 --> 00:02:21.930
Он начинается тут, и если я промотаю
вниз, до конца, заканчивается он тут.
00:02:23.320 --> 00:02:26.550
Внутри этого корневого LinearLayout,
я снова промотаю вверх.
00:02:28.220 --> 00:02:31.919
Здесь у меня дочерняя раскладка,
которая начинается тут.
00:02:31.919 --> 00:02:35.459
Я медленно пролистаю вниз.
00:02:35.459 --> 00:02:37.150
Она заканчивается здесь.
00:02:37.150 --> 00:02:38.860
Это для команды A.
00:02:38.860 --> 00:02:42.260
И есть еще один дочерний LinearLayout
который начинается здесь.
00:02:42.260 --> 00:02:47.418
Медленно проилистываем вниз,
заканчивается тут для команды Б.
00:02:47.418 --> 00:02:49.956
Хорошо. Там, вверху я заметила что-то
красное, так что
00:02:49.956 --> 00:02:52.750
я снова возвращаюсь вверх и смотрю,
в чем ошибка. Неправильная
00:02:54.400 --> 00:02:58.440
ориентация, ориентация не указана,
а по умолчанию она горизонтальная.
00:02:58.440 --> 00:03:00.965
Однако в этой раскладке
есть пара дочерних записей,
00:03:00.965 --> 00:03:03.793
где, по крайней мере, в одной
есть ширина match_parent.
00:03:03.793 --> 00:03:08.092
Гмм, я и правда хочу, чтобы она была
горизонтальной, но давайте
00:03:08.092 --> 00:03:10.010
все же уточним ориентацию.
00:03:11.360 --> 00:03:15.400
Технически это не нужно, потому что
горизонтально по умолчанию,
00:03:15.400 --> 00:03:16.430
но лучше все же уточнить.
00:03:17.950 --> 00:03:22.168
Тут еще говорится, что дочерние
записи накрывают друг друга.
00:03:22.168 --> 00:03:24.334
Нажимаю на Предпросмотр.
00:03:24.334 --> 00:03:27.901
Гм, вроде бы не сильно изменилось,
хотя я постаралась
00:03:27.901 --> 00:03:30.842
скопировать и вставить все с одного
в другой LinearLayout.
00:03:31.905 --> 00:03:34.345
Наверное это связано с только что
увиденной ошибкой.
00:03:35.525 --> 00:03:38.915
Там было написано, что раскладка
горизонтальна.
00:03:38.915 --> 00:03:42.615
Так что оно пытается уложить эти два
LinearLayouts рядом друг с другом, но
00:03:42.615 --> 00:03:46.591
тот LinearLayout, у которого ширина
layout_width соответствует
00:03:46.591 --> 00:03:49.940
match_parent, заполняет весь экран.
00:03:49.940 --> 00:03:54.510
Так что мой первый LinearLayout
заполняет экран, а
00:03:54.510 --> 00:03:58.510
потом второй размещается рядом с ним
где-то за экраном.
00:04:00.000 --> 00:04:03.360
Давайте решим, что мы хотим
сделать в данный момент.
00:04:03.360 --> 00:04:08.090
Мы хотим, чтобы две раскладки
занимали равное пространство рядом.
00:04:08.090 --> 00:04:11.860
И вот тут нам понадобится ввести
вес layout_weight.
00:04:11.860 --> 00:04:16.267
Я беру первый LinearLayout и
00:04:16.267 --> 00:04:19.579
присваиваю ему layout_weight,
равную 1.
00:04:21.140 --> 00:04:26.160
И еще я присвою ему ширину 0.
00:04:26.160 --> 00:04:29.940
Ну вот, теперь видно, что у нас
вообще-то два LinearLayout,
00:04:29.940 --> 00:04:32.940
они просто не отображались
как следует.
00:04:32.940 --> 00:04:34.560
Вот так уже лучше.
00:04:34.560 --> 00:04:37.807
Теперь надо присвоить layout_weight
второму LinearLayout,
00:04:37.807 --> 00:04:38.877
вот тут.
00:04:38.877 --> 00:04:40.500
Так что я пролистаю вниз.
00:04:40.500 --> 00:04:42.190
А вот и мой второй LinearLayout.
00:04:42.190 --> 00:04:44.250
И проделаю ту же самую операцию.
00:04:44.250 --> 00:04:48.186
Я ему присвою layout_weight
тоже равный 1, так что
00:04:48.186 --> 00:04:51.080
теперь у них одинаковый
вес layout_weight.
00:04:52.650 --> 00:04:55.630
И еще раз присвою ширину 0.
00:04:55.630 --> 00:05:00.160
А причина того, что я присвоила
им обоим ширину 0 в том,
00:05:00.160 --> 00:05:04.588
что если обе этих стороны не занимают
никакой ширины,
00:05:04.588 --> 00:05:06.850
тогда они занимают все
лишнее пространство,
00:05:06.850 --> 00:05:11.340
чем является весь экран, и делят его
на две части: половина одному
00:05:11.340 --> 00:05:14.950
и половина другому, потому что у них
равный вес раскладки.
00:05:14.950 --> 00:05:17.650
Если это немного запутанно, я дала
ссылки на несколько видео
00:05:17.650 --> 00:05:20.350
с обучающими заметками
по layout_weight.
00:05:20.350 --> 00:05:24.162
Итак, выглядит вполне неплохо, кроме
того, что пишет там и там Команда А.
00:05:24.162 --> 00:05:29.310
Я поднимусь вверх и изменю подпись,
напишу Команда Б.
00:05:30.460 --> 00:05:35.420
Вы могли заметить, что тут тоже есть
ошибка, а
00:05:35.420 --> 00:05:39.760
происходит она из-за того,
что у нас дубликаты ID.
00:05:39.760 --> 00:05:42.340
Вы помните, что я просто
скопировала и вставила код.
00:05:42.340 --> 00:05:46.090
Грубо говоря, у нас тут два объекта,
у которых одинаковый ID
00:05:46.090 --> 00:05:48.030
счета команды team_a_score.
00:05:48.030 --> 00:05:51.800
Поэтому я поменяю это сейчас на
team_b_score.
00:05:51.800 --> 00:05:53.840
Теперь смотрится хорошо.
00:05:53.840 --> 00:05:54.830
Трудновато увидеть.
00:05:54.830 --> 00:05:55.420
Я увеличу.
00:05:56.800 --> 00:05:58.150
Но тут написано Команда Б.
00:05:59.290 --> 00:06:02.420
У меня все правильные кнопки и
правильные элементы текста.
00:06:02.420 --> 00:06:03.870
Так что попробую посмотреть на это
00:06:05.490 --> 00:06:07.960
на своем телефоне.
Выглядит хорошо.
00:06:07.960 --> 00:06:13.418
Если нажимать кнопки Команды А,
счет обновляется. Чудесно.
00:06:13.418 --> 00:06:18.840
Если нажимать кнопки Команды Б...
ну, счет тоже обновляется.
00:06:18.840 --> 00:06:20.910
Это нечто.
00:06:20.910 --> 00:06:23.480
Но помните, мы просто хотели
настроить правильно XML.
00:06:23.480 --> 00:06:25.630
Нам сейчас неважно, что с Java.
00:06:25.630 --> 00:06:29.140
Но раз уж XML работает,
почему бы не исправить Java?