Урок 6. Виды Layouts. Ключевые отличия и свойства.
Урок 6. Виды Layouts. Ключевые отличия и свойства.
Расположение View-элементов на экране зависит от ViewGroup (Layout), в которой они находятся. В этом уроке мы рассмотрим основные виды Layout.
LinearLayout – отображает View-элементы в виде одной строки (если он Horizontal) или одного столбца (если он Vertical). Я использовал это на прошлом уроке, когда демонстрировал использование layout-файлов при смене ориентации.
TableLayout – отображает элементы в виде таблицы, по строкам и столбцам.
RelativeLayout – для каждого элемента настраивается его положение относительно других элементов.
AbsoluteLayout – для каждого элемента указывается явная позиция на экране в системе координат (x,y)
Рассмотрим эти виды
Click here to read this article!
LinearLayout – отображает View-элементы в виде одной строки (если он Horizontal) или одного столбца (если он Vertical). Я использовал это на прошлом уроке, когда демонстрировал использование layout-файлов при смене ориентации.
TableLayout – отображает элементы в виде таблицы, по строкам и столбцам.
RelativeLayout – для каждого элемента настраивается его положение относительно других элементов.
AbsoluteLayout – для каждого элемента указывается явная позиция на экране в системе координат (x,y)
Рассмотрим эти виды
Click here to read this article!
Последний раз редактировалось damager82 26 июл 2017, 17:39, всего редактировалось 19 раз.
-
- Сообщения: 21
- Зарегистрирован: 30 янв 2012, 21:15
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Уж не понимаю, то-ли у меня какой-то глюк с Еклипсом, толи у Гугла проблемы с кодом, но у меня нормально кнопки не расположились после копи-паста, порывшись нашел такое исправление:
Было:
Сделал:
то-есть объявляли ID как @+id/label, а в примере указывает на ID @id/label без плюсика.
и так во всех layout-ах
Было:
Код: Выделить всё
android:layout_below="@id/label"/>
Код: Выделить всё
android:layout_below="@+id/label"/>
и так во всех layout-ах
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Точно. Есть такая проблема. А раньше ее не было.
Видать какое-то из обновлений ADT плагина поменяло алгоритм парсинга ...
Спасибо, что указали! Ща подумаю, как подправить текст.
Видать какое-то из обновлений ADT плагина поменяло алгоритм парсинга ...
Спасибо, что указали! Ща подумаю, как подправить текст.
-
- Сообщения: 1
- Зарегистрирован: 26 июн 2012, 19:31
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Как сделать, чтобы динамически наполняемый Layout в виджете автоматически скроллировался и показывал последний добавленный элемент снизу?
Идея такова:
В виджете ограничен layout-ами и работать динамически могу через remoteViews.addView, поэтому создан например
<LinearLayout android:id="@+id/layout"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:layout_gravity="bottom|right" />
обновление стандартно через appWidgetManager.updateAppWidget
а RemoteViews собираю динамически, т.е. через remoteViews.addView добавляю еще RemoteViews:
remoteViews.addView(R.id.layout, nestedView);
в моем случае nestedView состоит из одного TextView:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Layout with TextView">
</TextView>
Все хорошо пока размера Layout хватает, а потом добавляемые нижние nestedView "уходят за нижние пределы Layout, а хотелось бы, чтобы ранеедобавленные "уходили" за верхние пределы Layout (автоскроллинг).
З.Ы. Возможно это вопрос к след. теме. Уроки еще не все прочел, но подходящей темы не нашел.
Идея такова:
В виджете ограничен layout-ами и работать динамически могу через remoteViews.addView, поэтому создан например
<LinearLayout android:id="@+id/layout"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:layout_gravity="bottom|right" />
обновление стандартно через appWidgetManager.updateAppWidget
а RemoteViews собираю динамически, т.е. через remoteViews.addView добавляю еще RemoteViews:
remoteViews.addView(R.id.layout, nestedView);
в моем случае nestedView состоит из одного TextView:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Layout with TextView">
</TextView>
Все хорошо пока размера Layout хватает, а потом добавляемые нижние nestedView "уходят за нижние пределы Layout, а хотелось бы, чтобы ранеедобавленные "уходили" за верхние пределы Layout (автоскроллинг).
З.Ы. Возможно это вопрос к след. теме. Уроки еще не все прочел, но подходящей темы не нашел.
-
- Сообщения: 18
- Зарегистрирован: 02 июл 2012, 03:16
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Подскажите пожалуйста. почему по умолчанию корневым создается Relative Layout а не LinearLayout. И почему файл назыается не main.xml а activiti_main
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Возможно, так происходит в новой версии ADT-плагина.xolostyak_by писал(а):Подскажите пожалуйста. почему по умолчанию корневым создается Relative Layout а не LinearLayout. И почему файл назыается не main.xml а activiti_main
Кто-нить обновляется регулярно? Есть такое в последних версиях?
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Да, стартовый макет немного изменили. Новая разметка теперь создается с Relative Layout . В ресурсах для каждого Activity создается макет меню. Соответственно в Activity помимо onCreate добавили
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
Также можно создать значки всех типов для приложения (раньше это можно было сделать через Android Asset Studio , теперь его прикрутили непосредственно к мастеру). Иконки можно создавать также после создания приложения запуском мастера Android Icon Set
Вообще количество визардов стало больше.
Теперь можно добавлять Activity (и не только) в приложения , они будут автоматом добавляться в манифест.
Ну еще много чего изменили/добавили.
ЗЫ Вообще я в "новостях" создал специальную тему для обсуждения нововведений.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
Также можно создать значки всех типов для приложения (раньше это можно было сделать через Android Asset Studio , теперь его прикрутили непосредственно к мастеру). Иконки можно создавать также после создания приложения запуском мастера Android Icon Set
Вообще количество визардов стало больше.
Теперь можно добавлять Activity (и не только) в приложения , они будут автоматом добавляться в манифест.
Ну еще много чего изменили/добавили.
ЗЫ Вообще я в "новостях" создал специальную тему для обсуждения нововведений.
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Не получается выполнить урок, так код указанный в уроке и код по ссылке http://developer.android.com/guide/topi ... ative.html вызывают ошибки. Конкретно ошибку вызывает элемент "Plain text" из "Text fields". При чем если в свойствах "Input Type" изменить на любой другой, например "textPersonName", то ошибка пропадает. Текст ошибки:
Из первой строчки понятно что проблема с явой, но что конкретно делать, обновлений новых не находит, да и все остальное работает без проблем. Эклипс перезапускал, систему перезагружал на результат не влияет:)NOTE: This project contains Java compilation errors, which can cause rendering failures for custom views. Fix compilation problems first.
java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Поправьте урок, чтобы Eclipse не ругался, необходимо в примере с rlayout.xml добавить в части с EditText:
Namehere, это решит твою проблему.
Код: Выделить всё
android:inputType="textNoSuggestions"
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
спасибо, diarworld. Это именно косяк эклипса? Ведь по умолчанию добавляется именно такой обьект и свойства поменять невозможно, только править хмл файл.
Да и при запуске приложений несмотря на ошибки выдаваемые eclipse все работает нормально.
Да и при запуске приложений несмотря на ошибки выдаваемые eclipse все работает нормально.
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
мне кажется или вы умолчали о FrameLayout?
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Умолчал. Но уже в следующем уроке я в этом каюсь )papka писал(а):мне кажется или вы умолчали о FrameLayout?
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Кнопка в низу экрана, в WebView если текста много то кнопка остается постоянно внизу а текст прокручивается за кнопкой. Как сделать чтобы кнопка находилась всегда ниже текста какой длины бы он не был, и появлялась когда прокручиваешь весь текст до конца?
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/webView"
android:layout_centerHorizontal="true"
android:gravity="center_vertical|center_horizontal"
android:text="@string/btnAdd" />
</RelativeLayout>
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Доброго времени суток. А как сделать чтоб было два эдит текста друг под другом, а рядом с ними кнопка высотой два этих эдита?
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Код: Выделить всё
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="horiontal" >
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
<!-- на ваше усмотрение -->
/>
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
<!-- на ваше усмотрение -->
/>
</LinearLayout>
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
</LinearLayout>
</LinearLayout>
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Спасибо. Работает. Но кнопка не одной высоты с эдитами. А вообще можно вручную выставить их размеры? Пытался ставить не получаетсяrezak90 писал(а): Не проверял, но должно работать
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
что значит вручную? по-пиксельно что ли? можно конечно за месть LinearLayout использовать RelativeLayout.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Да, по-пиксельно. Правда могут быть проблемы с разными экранамиrezak90 писал(а):что значит вручную? по-пиксельно что ли? можно конечно за месть LinearLayout использовать RelativeLayout.
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
по-пиксельно забудьте, если делаете для более чем одного разрешения экрана))) в 99,99% нет необходимости использовать такие методы, в андроиде достаточно способов/методов организовать всё красиво для всех экранов.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.
Подскажите,
1. как сделать чтобы кнопочки были впритык?
2. и как изменить их высоту? (мне нужно чтобы ниже были, чуть- чуть приплюснутыми)
1. как сделать чтобы кнопочки были впритык?
2. и как изменить их высоту? (мне нужно чтобы ниже были, чуть- чуть приплюснутыми)
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/btLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="0dp"
android:text="ххх" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:text="уууу" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="0dp"
android:text="ааа" />
</LinearLayout>
<TextView
android:id="@+id/tvView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="сссссс" >
</TextView>
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/linLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
</LinearLayout>