Урок 5. Layout-файл в Activity. XML представление. Смена ориентации экрана.

Обсуждение уроков
Megamozg
Сообщения: 3
Зарегистрирован: 09 окт 2015, 15:40

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Megamozg » 10 окт 2015, 12:48

А можно скрины myscreen и content_myscreen?
Нужно подредактировать myscreen и вместо записей c activity_main написать myscreen.

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 12:55

Megamozg писал(а):А можно скрины myscreen и content_myscreen?
Нужно подредактировать myscreen и вместо записей c activity_main написать myscreen.
Пожалуйста, код:
my.screen.xml вертикальный
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Вертикальная ориентация экрана">
</TextView>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button1">
</Button>
<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button2">
</Button>
<Button
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button3">
</Button>
<Button
android:id="@+id/button4"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button4">
</Button>
</LinearLayout>
</LinearLayout>[/syntax]

my.screen.xml горизонтальный
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Горизонтальная ориентация экрана">
</TextView>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button1">
</Button>
<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button2">
</Button>
<Button
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button3">
</Button>
<Button
android:id="@+id/button4"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Button4">
</Button>
</LinearLayout>
</LinearLayout>[/syntax]

content_main.xml
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main" tools:context=".MainActivity">

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

Если в 10 строке файла content_main.xml изменить на:
[syntax=xml]tools:showIn="@layout/myscreen" tools:context=".MainActivity">[/syntax]
то выбивает вот такое, на вкладе Preview:
Rendering Problems
The surrounding layout (@layout/myscreen) did not actually include this layout. Remove tools:showIn=... from the root tag

Кажется нашел решение проблемы, но еще не полностью.
activity_main.xml
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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" android:fitsSystemWindows="true"
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main"
android:layout_height="match_parent"
android:layout_width="match_parent" />

<android.support.design.widget.FloatingActionButton android:id="@+id/fab"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>
[/syntax]

Если в 18 строке изменить на:
[syntax=xml]<include layout="@layout/myscreen"[/syntax]
то вот такое получается:
434686.png
434686.png (180.03 КБ) 17661 просмотр
а в файле myscreen.xml все так:
434696.png
434696.png (178.94 КБ) 17661 просмотр
Не подскажите что изменить чтобы все было как надо ?
Хотя после этого в файле сontent_main.xml все равно вот такая ошибка:
434736.png
434736.png (217.77 КБ) 17661 просмотр
Но эмулятор запускается, только вот отображает не так как надо.

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 14:13

При смене ориентации эмулятора с использованием Ctrl+F12, ориентация меняется, но изображение остается вертикальным.
Вертикальное:
434745.png
434745.png (55.21 КБ) 17661 просмотр
Горизонтальное:
434761.png
434761.png (42.78 КБ) 17661 просмотр

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 10 окт 2015, 14:47

сам в Бланке не делал.. только в Эмпти..
Но что увидел щас у вас:
1.my.screen.xml вертикальный ( у вас стоит android:orientation="vertical">) все норм..
2.my.screen.xml горизонтальный ( у вас стоит android:orientation="vertical"> ) СНОВА????? куда он будет переключаться?? должно быть hjrizontal и это файл ИМЕННо в папке Layout-land.

Измените... вроде в content_main.xml все норм.. там и Вертик. задана и Горизонт..
если не заработает то content_main.xml сделайте еще и впапку Layout-land ( Я так думаю...)

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 15:07

Omax писал(а):сам в Бланке не делал.. только в Эмпти..
Но что увидел щас у вас:
1.my.screen.xml вертикальный ( у вас стоит android:orientation="vertical">) все норм..
2.my.screen.xml горизонтальный ( у вас стоит android:orientation="vertical"> ) СНОВА????? куда он будет переключаться?? должно быть hjrizontal и это файл ИМЕННо в папке Layout-land.
Все делал по уроку, так и должно быть, снизу в "my.screen.xml горизонтальный", а именно в строке 17 пишет: [syntax=xml]android:orientation="horizontal">[/syntax]
Файл находится в папке layout-land:
434814.png
434814.png (159.77 КБ) 17657 просмотров

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 10 окт 2015, 15:47

Сделал сам..

1. создаем папку layout-lands в Res.;
2. создаем myscreen.xml в layout. ( В него я просто скопировал кнопки из моего проекта в Empty_Activity). с параметром vertical;
3. копируем myscreen.xml в layout-lands и меняем параметр на horizontal;
4. в файле activity_main ( 18 строка у тебя есть <include layout="@layout/content_main" />) меняем на (<include layout="@layout/myscreen" />

запускаем! проверил на реальном устройстве.. работает. только кнопки налезли на статус бар, но я их ведь и не менял.. но при смене ориентации все меняется)

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 16:25

Omax писал(а):Сделал сам..

1. создаем папку layout-lands в Res.;
2. создаем myscreen.xml в layout. ( В него я просто скопировал кнопки из моего проекта в Empty_Activity). с параметром vertical;
3. копируем myscreen.xml в layout-lands и меняем параметр на horizontal;
4. в файле activity_main ( 18 строка у тебя есть <include layout="@layout/content_main" />) меняем на (<include layout="@layout/myscreen" />

запускаем! проверил на реальном устройстве.. работает. только кнопки налезли на статус бар, но я их ведь и не менял.. но при смене ориентации все меняется)
1.layout-land у меня есть в res(выше скрин).
2.myscreen.xml в layout так же есть(выше скрин и код)
3.myscreen.xml в ayout-land так же есть(выше скрин и код)
4.Я это менял(выше так же есть скрин и я писал об этом), но вот не понравилось что кнопки налезают слишком наверх и спрашивал как это изменить.
На эмуляторе все равно при смене ориентации не меняется ничего, возможно глючит эмулятор если у Вас на реальном устройстве все работает.
Проверил даже если не запускаю приложение то при смене ориентации экрана эмулятора, он не меняет ничего:
434880.png
434880.png (106.96 КБ) 17655 просмотров
Спасибо Вам большое за уделенное время и советы.

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 10 окт 2015, 16:33

я подключил свой старенький Alkatel one каой то там 4.2.2 и доволен как слон, не надо мучаться с эму..

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 16:52

Omax писал(а):я подключил свой старенький Alkatel one каой то там 4.2.2 и доволен как слон, не надо мучаться с эму..
Поменял Anroid на версию 5.0.1 и в нем ориентация меняется как надо. В Android 6.0 с этим проблемы.
К сожалению у меня нету ни одного устройства с Android, приходится мучиться с эмулятором )

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 10 окт 2015, 17:53

QDAS писал(а):
Omax писал(а):я подключил свой старенький Alkatel one каой то там 4.2.2 и доволен как слон, не надо мучаться с эму..
Поменял Anroid на версию 5.0.1 и в нем ориентация меняется как надо. В Android 6.0 с этим проблемы.
К сожалению у меня нету ни одного устройства с Android, приходится мучиться с эмулятором )
вот и решена проблема;-) а зачем тогда тебе на андроид програмирование?

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 10 окт 2015, 19:11

Omax писал(а):вот и решена проблема;-) а зачем тогда тебе на андроид програмирование?
Для общего развития, да и область довольно таки популярна в наше время и думаю популярность будет только расти, т.е Android разработчиков будет требоваться больше да больше.

Turalllb
Сообщения: 40
Зарегистрирован: 08 окт 2015, 17:48

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Turalllb » 11 окт 2015, 00:48

В Эмпти нет проблем. Пробую в бланке , использовал замеченные изменения майн_активити на майскрин от QDAS , но все равно никак. не запускается. устал, толторы сутки на работе , надо отдохнуть и с утра еще рассмотреть код. и кстати а в чем суть этого различия Бланк и Емпти , чем отличаются то . что дает этот статус бар . Нельзя ли было этот статус бар как кнопочку ставить в Эмпти, зачем обязательно другой тип модуля Бланк?

Тихоня
Сообщения: 6
Зарегистрирован: 10 окт 2015, 21:50

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Тихоня » 11 окт 2015, 01:40

Здраствуйте. Уже часа 4 прошли на решение проблемы, но так и не получилось ничего. Когда в MainActivity меняю main на myscreen выбивает ошибку. Причём на разных эмуляторах и реальных устройствах с разными версиями андроид, бестолку. Также пробывал через создание content_myscreen.xml и myscreen.xml так как на последней версии Android Studio main и content_main. Даже на всякий случай настройки Android Studio сбил по умолчанию, всеравно не помогает.
Если кто то может помочь дельным советом буду признателен.
http://piccy.info/view3/8854080/3080e74 ... e985/orig/
Прочитавши Turalllb действительно в Empty Activity без проблем создается и оно как раз более приближенное к примеру так как нету content_main.xml
Хотелось бы узнать тоже в чём разница между этими Activity и на сколько она существенная

QDAS
Сообщения: 12
Зарегистрирован: 09 окт 2015, 16:00

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение QDAS » 11 окт 2015, 11:33

Тихоня писал(а):Здраствуйте. Уже часа 4 прошли на решение проблемы, но так и не получилось ничего. Когда в MainActivity меняю main на myscreen выбивает ошибку. Причём на разных эмуляторах и реальных устройствах с разными версиями андроид, бестолку. Также пробывал через создание content_myscreen.xml и myscreen.xml так как на последней версии Android Studio main и content_main. Даже на всякий случай настройки Android Studio сбил по умолчанию, всеравно не помогает.
Если кто то может помочь дельным советом буду признателен.
http://piccy.info/view3/8854080/3080e74 ... e985/orig/
В файле MainActivity, а конкретней тут:
[syntax=java]setContentView(R.layout.activity_main);[/syntax]
Надо чтобы стоял только модуль activity_main.
А в самом модуле activity_main, а конкретней тут:
[syntax=xml]<include layout="@layout/content_main" />[/syntax]
Ставим наш модуль который желаем чтобы запустился, в моем случае это content_main.

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 11 окт 2015, 18:43

Тихоня писал(а):Здраствуйте. Уже часа 4 прошли на решение проблемы, но так и не получилось ничего. Когда в MainActivity меняю main на myscreen выбивает ошибку. Причём на разных эмуляторах и реальных устройствах с разными версиями андроид, бестолку. Также пробывал через создание content_myscreen.xml и myscreen.xml так как на последней версии Android Studio main и content_main. Даже на всякий случай настройки Android Studio сбил по умолчанию, всеравно не помогает.
Если кто то может помочь дельным советом буду признателен.
http://piccy.info/view3/8854080/3080e74 ... e985/orig/
Прочитавши Turalllb действительно в Empty Activity без проблем создается и оно как раз более приближенное к примеру так как нету content_main.xml
Хотелось бы узнать тоже в чём разница между этими Activity и на сколько она существенная
не трогайте main !!!!!! создавайте myscreen.xml, удаляйте content_myscreen.xml а в main есть
такая строка <include layout="@layout/content_main" /> жирным меняете на myscreen и будет вам щастье)))

не забываем myscreen.xml скопировать в папку layout-land и поменять там параметр на horizontal

Тихоня
Сообщения: 6
Зарегистрирован: 10 окт 2015, 21:50

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Тихоня » 12 окт 2015, 20:35

Omax писал(а):
не трогайте main !!!!!! создавайте myscreen.xml, удаляйте content_myscreen.xml а в main есть
такая строка <include layout="@layout/content_main" /> жирным меняете на myscreen и будет вам щастье)))

не забываем myscreen.xml скопировать в папку layout-land и поменять там параметр на horizontal
Спасибо за подробное обьяснение, для новичка это крайне важно. Если будет возможность ответьте.
1. Если не затруднит можете обьяснить почему так произошло, текст сместился вверх. Скрин http://piccy.info/view3/8861571/3a1d991 ... 28dc/orig/
2. В примере одно, а тут мы менем через include. Я скорее не прав, поправьте. Запускаем приложение, читается файл MainActivity затем он с помощью setContentView(R.layout.main); перебрасывает на чтение файла main.xml, а main.xml в свою очередь с помощи include перебрасывает на чтение mysreen.
3. И почему в данном BlankActivity всё так замудрено в отличии от Empty где по сути можно сделать как в примере. Почему нельзя в нашем случае просто изменить ссылку в setContentView(R.layout........)
4. Также хотелось бы уточнить у меня в файле strings нету HelloWorld, сам я его из этого файла тоже не удалял вручную. Значит ли это что он был просто текстом без идентификатора.
Вот что у меня в strings.xml
<resources>
<string name="app_name">P0051_LayoutFile2</string>
<string name="action_settings">Settings</string>
<string name="myscreen">Этот экран написан не в main.xml а в myscreen.xml</string>
</resources>

Вот все @string которые у меня есть, возможно их надо импортировать откуда то? http://piccy.info/view3/8862053/49e540b ... e367/orig/

С уважением Тихоня)

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 13 окт 2015, 06:08

Файлы .xml это файлы описания элементов находящихся на экране. Можно их создавать и напрямую в Активити, в уроках позднее это увидите.
Урок снят был до появления последней версии Студии, в которой уже реализовали компоненты Материал Дизайн. Это именно кнопка внизу экрана с конвертиком. И добавили этот элемент сразу в Бланк Активити. Вы можете использовать только Эмпти, как вам удобно..
В Бланк Активити экраном является ваш main.xml или activity_main.xml если вы не меняли имя. Откройте этот файл и посмотрите что там есть. Разберитьсь. Старайтесь понять что и для чего, простое копирование кода вас ни чему не научит, Поиск Гугл рулит, это не единственный ресурс для обучения. Просмотрите файл Activity и тоже Разберитьсь что и зачем и поймете что ни чего замедленного там нету. Для о.учения хватит и Эмпти. Но советую разобраться сразу.
А в файле ontent_main.xml описаны элементы которые вы добавляете...

Omax
Сообщения: 33
Зарегистрирован: 04 окт 2015, 11:20

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Omax » 13 окт 2015, 06:13

В файле string.xml описаны строковые ресурсы, т.е. все что у вас будет написано на экране должно быть здесь. А Hello world, да не содержит изначально id , и может и строковые не содержать, я удаляй сразу TextView начальное..

Тихоня
Сообщения: 6
Зарегистрирован: 10 окт 2015, 21:50

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Тихоня » 13 окт 2015, 13:16

Omax писал(а):Файлы .xml это файлы описания элементов находящихся на экране. Можно их создавать и напрямую в Активити, в уроках позднее это увидите.
Урок снят был до появления последней версии Студии, в которой уже реализовали компоненты Материал Дизайн. Это именно кнопка внизу экрана с конвертиком. И добавили этот элемент сразу в Бланк Активити. Вы можете использовать только Эмпти, как вам удобно..
В Бланк Активити экраном является ваш main.xml или activity_main.xml если вы не меняли имя. Откройте этот файл и посмотрите что там есть. Разберитьсь. Старайтесь понять что и для чего, простое копирование кода вас ни чему не научит, Поиск Гугл рулит, это не единственный ресурс для обучения. Просмотрите файл Activity и тоже Разберитьсь что и зачем и поймете что ни чего замедленного там нету. Для о.учения хватит и Эмпти. Но советую разобраться сразу.
А в файле ontent_main.xml описаны элементы которые вы добавляете...
Спасибо за ответ, буду старатся))
Возможно кому то ещё пригодится обьяснение что делает include layout.
"В секции Custom можно увидеть компонент <include>. Если вы имели дело с PHP, то данный тег вам уже знаком. Он позволяет вставить заранее подготовленный кусок разметки в вашу рfзметку. Зачем это нужно? Представьте себе, что у вас сложное приложение, состоящее из нескольких активностей. И в каждой активности есть один и тот же одинаковый элемент, например, футер для отображения логотипа компании или текста. Чтобы не повторять одинаковый блок в каждой активности по отдельности, можно создать отдельную разметку и через include добавлять в нужное место."

Darja
Сообщения: 4
Зарегистрирован: 20 окт 2015, 15:54

Re: Урок 5. Layout-файл в Activity. XML представление. Смена

Сообщение Darja » 20 окт 2015, 16:19

Здравствуйте!
У меня такая проблема, что когда я поменяла аргументы метода setContentView. с R.layout.activity_main на R.layout.myscreen в Эмуляторе выходит ошибка о том , что LayoutFiles остановлен.
Изображение
Изображение
Что мне делать???


Помогите пожалуйста!! Я уже не знаю что делать. Смотрела что в комментах выше говорят..пробовала, не получается ни чего(((
Кто знает в чем дело, помогите. И если можно распишете по подробней что мне делать нужно.

Ответить