Страница 1 из 5

Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 11 авг 2011, 03:00
damager82
Расположение View-элементов на экране зависит от ViewGroup (Layout), в которой они находятся. В этом уроке мы рассмотрим основные виды Layout.
LinearLayout – отображает View-элементы в виде одной строки (если он Horizontal) или одного столбца (если он Vertical). Я использовал это на прошлом уроке, когда демонстрировал использование layout-файлов при смене ориентации.
TableLayout – отображает элементы в виде таблицы, по строкам и столбцам.
RelativeLayout – для каждого элемента настраивается его положение относительно других элементов.
AbsoluteLayout – для каждого элемента указывается явная позиция на экране в системе координат (x,y)
Рассмотрим эти виды


Click here to read this article!

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 30 янв 2012, 23:24
Jack_killer
Уж не понимаю, то-ли у меня какой-то глюк с Еклипсом, толи у Гугла проблемы с кодом, но у меня нормально кнопки не расположились после копи-паста, порывшись нашел такое исправление:
Было:

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

android:layout_below="@id/label"/>
Сделал:

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

android:layout_below="@+id/label"/>
то-есть объявляли ID как @+id/label, а в примере указывает на ID @id/label без плюсика.

и так во всех layout-ах

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 01 фев 2012, 15:04
damager82
Точно. Есть такая проблема. А раньше ее не было.
Видать какое-то из обновлений ADT плагина поменяло алгоритм парсинга ...

Спасибо, что указали! Ща подумаю, как подправить текст.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 26 июн 2012, 19:51
ShortyGuard
Как сделать, чтобы динамически наполняемый 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 (автоскроллинг).

З.Ы. Возможно это вопрос к след. теме. Уроки еще не все прочел, но подходящей темы не нашел.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 04 июл 2012, 00:11
xolostyak_by
Подскажите пожалуйста. почему по умолчанию корневым создается Relative Layout а не LinearLayout. И почему файл назыается не main.xml а activiti_main
Изображение

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 05 июл 2012, 13:50
damager82
xolostyak_by писал(а):Подскажите пожалуйста. почему по умолчанию корневым создается Relative Layout а не LinearLayout. И почему файл назыается не main.xml а activiti_main
Возможно, так происходит в новой версии ADT-плагина.
Кто-нить обновляется регулярно? Есть такое в последних версиях?

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 05 июл 2012, 14:22
AndreyI
Да, стартовый макет немного изменили. Новая разметка теперь создается с 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 (и не только) в приложения , они будут автоматом добавляться в манифест.
Ну еще много чего изменили/добавили.

ЗЫ Вообще я в "новостях" создал специальную тему для обсуждения нововведений.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 09 июл 2012, 07:26
Namehere
Не получается выполнить урок, так код указанный в уроке и код по ссылке 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. Ключевые отличия и свойства.

Добавлено: 13 июл 2012, 22:38
diarworld
Поправьте урок, чтобы Eclipse не ругался, необходимо в примере с rlayout.xml добавить в части с EditText:

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

android:inputType="textNoSuggestions"
Namehere, это решит твою проблему.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 16 июл 2012, 11:35
Namehere
спасибо, diarworld. Это именно косяк эклипса? Ведь по умолчанию добавляется именно такой обьект и свойства поменять невозможно, только править хмл файл.
Да и при запуске приложений несмотря на ошибки выдаваемые eclipse все работает нормально.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 26 июл 2012, 12:59
papka
мне кажется или вы умолчали о FrameLayout?

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 30 июл 2012, 09:37
damager82
papka писал(а):мне кажется или вы умолчали о FrameLayout?
Умолчал. Но уже в следующем уроке я в этом каюсь )

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 09 окт 2012, 10:28
sotnik
Кнопка в низу экрана, в 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. Ключевые отличия и свойства.

Добавлено: 04 ноя 2012, 23:26
Digetix
Доброго времени суток. А как сделать чтоб было два эдит текста друг под другом, а рядом с ними кнопка высотой два этих эдита?

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 04 ноя 2012, 23:53
rezak90

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

<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>
Не проверял, но должно работать

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 05 ноя 2012, 19:17
Digetix
rezak90 писал(а): Не проверял, но должно работать
Спасибо. Работает. Но кнопка не одной высоты с эдитами. А вообще можно вручную выставить их размеры? Пытался ставить не получается

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 05 ноя 2012, 19:55
rezak90
что значит вручную? по-пиксельно что ли? можно конечно за месть LinearLayout использовать RelativeLayout.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 06 ноя 2012, 12:14
Digetix
rezak90 писал(а):что значит вручную? по-пиксельно что ли? можно конечно за месть LinearLayout использовать RelativeLayout.
Да, по-пиксельно. Правда могут быть проблемы с разными экранами

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 06 ноя 2012, 13:22
rezak90
по-пиксельно забудьте, если делаете для более чем одного разрешения экрана))) в 99,99% нет необходимости использовать такие методы, в андроиде достаточно способов/методов организовать всё красиво для всех экранов.

Re: Урок 6. Виды Layouts. Ключевые отличия и свойства.

Добавлено: 01 дек 2012, 14:07
$01ny$hko
Подскажите,
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>