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

Обсуждение уроков
dzoff
Сообщения: 1
Зарегистрирован: 23 апр 2012, 23:28

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

Сообщение dzoff » 23 апр 2012, 23:33

День добрый, уменя возник вопрос по размеру кнопок!

У меня есть данная конструкция:

<TableRow>
<Button
android:id="@+id/auto_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ramka2" />
<Button
android:id="@+id/angel_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ramka2" />
<Button
android:id="@+id/about_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ramka2" />
</TableRow>

На разных устройствах, этот ряд кнопок выглядит по разному, где-то кнопки вытянуты в высоту, где то в ширину.
Хотелось бы узнать как задать параметр android:layout_height равный 1/3 параметра android:layout_width, что бы кнопки в ряд получались всегда квадратные!!!
Заранее спасибо!!!

Milker
Сообщения: 12
Зарегистрирован: 18 апр 2012, 22:54

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

Сообщение Milker » 28 апр 2012, 22:27

Вопрос обратный: как сделать чтобы, при смене ориентации экрана не менялась ориентация программы? У меня сейчас layout имеет ориентацию vertical, и мне нужно что при повороте layout оставался на месте. Это возможно?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 29 апр 2012, 10:11

В файле манифеста, для Activity, есть свойство Screen orientation.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Milker
Сообщения: 12
Зарегистрирован: 18 апр 2012, 22:54

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

Сообщение Milker » 29 апр 2012, 18:23

Спасибо за наводку.

Код: Выделить всё

android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "sensor" | "fullSensor" | "nosensor"]
Я использовал

Код: Выделить всё

android:screenOrientation = "portrait"

Максим
Сообщения: 3
Зарегистрирован: 12 май 2012, 16:59

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

Сообщение Максим » 12 май 2012, 17:15

"Создадим еще один layout-файл, например myscreen.xml. Для этого выделим папку res/layout в нашем проекте и нажмем кнопку создания нового файла. В поле File вводим имя файла: myscreen.xml и жмем Finish. Новый layout-файл должен сразу открыться."

Эта фраза, судя по комментам, вызвала затруднения сразу у нескольких человек. Наверное, лучше уточнить, что создавать файл надо не просто кнопкой создания нового файла, а использовать для этого после нажатия соответствующий мастер "Android XML Layout File". Или то же самое можно сделать через контекстное меню папки: "Создать - Прочие... - Android XML Layout File", что немного более интуитивно понятно (я всегда опасаюсь для локальных действий нажимать глобальные кнопки в интерфейсе всего окна...)

izekia
Сообщения: 2
Зарегистрирован: 15 май 2012, 23:31

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

Сообщение izekia » 15 май 2012, 23:36

видел несколько похожих проблем в теме, суть в том что при запуске приложения необходимо закрывать в eclipse открытые для редактирования лейауты иначе генерится пустой файл "...out.xml" и соответственно дальше ничего не работает.
Может быть будет кому-то полезно.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 16 май 2012, 09:47

izekia писал(а):видел несколько похожих проблем в теме, суть в том что при запуске приложения необходимо закрывать в eclipse открытые для редактирования лейауты иначе генерится пустой файл "...out.xml" и соответственно дальше ничего не работает.
Может быть будет кому-то полезно.
Интересно. Я иногда прямо в открытом layout жму CTRL+F11, проблем ни разу не было.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

izekia
Сообщения: 2
Зарегистрирован: 15 май 2012, 23:31

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

Сообщение izekia » 16 май 2012, 17:05

damager82 писал(а): Интересно. Я иногда прямо в открытом layout жму CTRL+F11, проблем ни разу не было.
Я сначала в книжке на это наткнулся, потом уже сам, книга Grantt Allen "Beginning Android 4"
How Not to Run Your Project
When you go to run your project, be sure that an XML file is not the active tab in the
editor. Attempting to “run” this will result in a .out file being created in whatever
directory the XML file lives in (e.g., res/layout/main.xml.out). To recover, simply delete
the offending .out file and try running again, this time with a Java file as the active tab.

alex6999
Сообщения: 13
Зарегистрирован: 29 май 2012, 18:50

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

Сообщение alex6999 » 30 май 2012, 02:53

подскажите, вот у вас идёт описания 4х кнопок, это описания отличаеются всего на 1 цифру, в названии и ИД.
а у меня 8 строк и в каждой 4 разных элементов, описания изобилуют параметрами, получается очень громоздко, параметр надо исправлять сразу в 8 элементах, выручает только выделение в графической среде и смена параметра через интерфейс.

нельзяли както упростить всё это?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 30 май 2012, 09:23

alex6999 писал(а):параметр надо исправлять сразу в 8 элементах
Попробуйте использовать стили в layout-файлах.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 30 май 2012, 10:22

izekia писал(а):
damager82 писал(а): Интересно. Я иногда прямо в открытом layout жму CTRL+F11, проблем ни разу не было.
Я сначала в книжке на это наткнулся, потом уже сам, книга Grantt Allen "Beginning Android 4"
How Not to Run Your Project
When you go to run your project, be sure that an XML file is not the active tab in the
editor. Attempting to “run” this will result in a .out file being created in whatever
directory the XML file lives in (e.g., res/layout/main.xml.out). To recover, simply delete
the offending .out file and try running again, this time with a Java file as the active tab.
У меня тоже с этим никаких траблов не было, видимо с момента выхода книжки это поправили в ADT.

Глюки с Эклипсом у меня бывали конечно.
Как то добавил строку в strings и использовал её в setError с помощью метода getString (в методе setError почему то нет конструктора для работы с ID).
Запустил, при появлении ошибки в ячейке предупреждение появилось, но... совсем с другим текстом (из другого строкового ресурса). Я проверил файл R там все нормально, ID у строк генерируются разные. Но почему программа путает строки я так и не понял. Решилось просто, я удалил эту злополучную строку, которая появлялась вместо той что мне нужно, в коде ничего не менял, запустил программу - все норамльно, потом опять вернул строку в strings на тоже самое место, запустил - опять все нормально. Я так и не врубился что это было?

romanzi
Сообщения: 8
Зарегистрирован: 31 май 2012, 21:55

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

Сообщение romanzi » 31 май 2012, 22:07

Возможно не по теме,но всё же:
Нужно что бы приложение устанавливалось на карту памяти (версия Андроида в проекте 2.3.3.)
Я добавил в Манифест строку:

android:installLocation="preferExternal"

Но приложение всё равно устанавливается на телефон (только в настройках предлагает на карту перенести).
Я пробовал задавать ещё auto, но там та же история.

alex6999
Сообщения: 13
Зарегистрирован: 29 май 2012, 18:50

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

Сообщение alex6999 » 02 июн 2012, 10:32

установка на сд карту не гарантируется, и это правильно, у меня даже в старом галакси с было 2 гига внутренней памяти.
скорее всего современные телефоны игнорируют это если свободной внутренней памяти дофига.
кстати в ISC телефонах SD карта и вовсе эмулируется во встроенной памяти, а физическая карта находся в папке в сд карте

вот что пишется
If you declare "preferExternal", you request that your application be installed on the external storage, but the system does not guarantee that your application will be installed on the external storage. If the external storage is full, the system will install it on the internal storage. The user can also move your application between the two locations.

If you declare "auto", you indicate that your application may be installed on the external storage, but you don't have a preference of install location. The system will decide where to install your application based on several factors. The user can also move your application between the two locations.

Аватара пользователя
Crime
Сообщения: 4
Зарегистрирован: 02 мар 2012, 18:33

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

Сообщение Crime » 08 июн 2012, 11:56

Извините, если, беру на себя лишнее - у Вас этого в уроках не было(или я не нашла). А наверное было бы полезно, добавить строчку о том, что при смене ориентации экрана - по-новой вызывается onCreate() для активити ну и там методы борьбы ))). Когда уже знаешь этот факт он кажется очевидным, а вот когда не знаешь - можно об этом и не подумать.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 08 июн 2012, 12:04

Crime писал(а):при смене ориентации экрана - по-новой вызывается onCreate() для активити ну и там методы борьбы ))).
Если есть мысли по улучшению уроков - пишите обязательно. Я уже несколько раз фиксил и добавлял в уроки замечания разные.

А про смену ориентации я пишу в уроках 23 и 70. И, когда начну рассказывать про AsyncTask, будет очень полезный урок, посвященный этой теме.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Crime
Сообщения: 4
Зарегистрирован: 02 мар 2012, 18:33

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

Сообщение Crime » 08 июн 2012, 12:31

Спасибо. Таки не дошла до 70 - го )

Eshkin-Kat
Сообщения: 12
Зарегистрирован: 13 июн 2012, 02:29

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

Сообщение Eshkin-Kat » 13 июн 2012, 02:34

ругается на android:layout_width="match_pattern". Говорит что нельзя:
Изображение
Заменил на fill_pattern.
win 7 32, android 2.3

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 13 июн 2012, 10:55

Eshkin-Kat писал(а):ругается на android:layout_width="match_pattern". Говорит что нельзя:
Изображение
Заменил на fill_pattern.
Если использовать Android версии < 2, то там не существует еще match_parent.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Eshkin-Kat
Сообщения: 12
Зарегистрирован: 13 июн 2012, 02:29

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

Сообщение Eshkin-Kat » 13 июн 2012, 15:45

Я использовал 2.2.
win 7 32, android 2.3

Alexei
Сообщения: 6
Зарегистрирован: 28 июн 2012, 16:51

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

Сообщение Alexei » 28 июн 2012, 17:23

Надеюсь, что пишу туда, куда нужно )
При прочтении уроков я обычно вставлял код программы, копируя его прямо с сайта, нажимал Ctrl+Shift+O и запускал проект. Практически всегда все работало( ну за исключением смены match_parent на fill_parent), но порой стал замечать, что Eclipse не находит, созданного мной Layout в файле ресурсов R. Фактически он создавался и я его мог просмотреть. Там было всё впорядке. Все id Layout`ов были зарегестированы и видны, но в файле MainActivity.java при вызове функции setContentView(R.layout.main); всегда подчеркивалось красным.
Дело оказалось в том, что при нажатии Ctrl+Shift+O Eclipse предлогал добавить пакет android.R который, я так понял, совсем не связан с файлом R, который генерируется в проекте. У меня не возникало сомнений, что это нужная либа и её необходимо оставить, поэтому иногда долго искал что же не так.
Думаю это будет хорошим комментарием к уроку(если он уже есть, то сорри за невнимательность).
Вот тут прочитал по этому поводу http://stackoverflow.com/questions/8850 ... roid-error

Ответить