Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Смена ориентации с портретной на альбомную методом create http://www.cyberforum.ru/android-dev/thread1240041.html
Добрый день! Имеется две ориентации: портреная и альбомная. Альбомная лежит в папке layout-land, портреная layout. При смене ориентации метод create вызывается снова, что сказывается на...
Программирование Android Заблокировать доступ к программе Нужно на время выполнения функции заблокировать доступ к приложению (так чтобы работал ProgressBar), как это сделать? http://www.cyberforum.ru/android-dev/thread1239936.html
Android canvas Программирование Android
Как передать параметры в класс с методом onDraw? Этот самый класс мне нужно вызвать в xml! я так то сделал вложеный класс, и запускал его setContentView(new Grafik(this)); и пользовался...
Программирование Android Запуск стороннего .apk
Подскажите как запустить из своего приложения, другое .apk(Зная его путь)
Программирование Android Как считывать данные с кнопки на наушниках? http://www.cyberforum.ru/android-dev/thread1239763.html
Как считывать данные с кнопки на наушниках?
Программирование Android Межстраничное объявление Может кто подсказать как вставить межстраничное объявление admob? Делал все по инструкции, мне нужно чтобы когда переходило на активити показывалась реклама, но не получается приложение крашится.... подробнее

Показать сообщение отдельно
Paket236
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 52
11.08.2014, 19:20  [ТС]
Strelok45, спасибо, конечно, но я не об этом спрашивал .

Уже сам смог разобраться, частично помог урок 16 сайта startandroid:
http://startandroid.ru/ru/uroki/vse-...ie-ekrana.html

Оказывается, иерархия атрибутов по-своему организована. Вот пара картинок для наглядности:
Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout?

После того, как более-менее разобрался, что и откуда берётся, сделал некоторые выводы (надеюсь, что в целом правильные; немного сложновато сформулированы, но может кому-нибудь пригодятся ):

Итак, с ViewGroup-элементом связаны атрибуты, объявленные в классах ViewGroup и ViewGroup.LayoutParams.
Атрибуты класса ViewGroup (+унаследованные) ViewGroup-элемента доступны только для самого себя.
Атрибуты класса ViewGroup.LayoutParams (+унаследованные) ViewGroup-элемента доступны только для непосредственных (в XML-иерархии) View- и ViewGroup-элементов-наследников. Для самого себя атрибуты собственного вложенного класса недоступны.
В свою очередь, для {View-элемента-наследника || ViewGroup-элемента-наследника} доступны атрибуты класса ViewGroup.LayoutParams (+унаследованные) непосредственного (в XML-иерархии) ViewGroup-элемента-родителя, а также атрибуты всех классов-родителей (в java-иерархии) {View-элемента-наследника || ViewGroup-элемента-наследника соответственно}.

Но кое в чём я не смог разобраться: почему в каждом элементе доступен атрибут android:layout_gravity ? Насколько я знаю, такой атрибут объявлен в LinearLayout.LayoutParams, но, как видно на скриншоте ниже и приведённом xml-коде, он без проблем указывается в элементе RelativeLayout:
Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300px"
    android:layout_height="300px"
    android:layout_gravity="bottom|right"
    android:gravity="left"
    tools:context="${relativePackage}.${activityClass}" >
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
 
</RelativeLayout>

Это какой-то особенный атрибут, исключение из правил?

Да, и ещё походу в Eclipse есть глюк (v4.4.0): для содержимого (т.е. для непосредственных элементов-наследников) элемента TableRow недоступны атрибуты android:layout_column и android:layout_span, объявленные в TableRow.LayoutParams (по крайней мере, отсутствуют в списке). В Android Studio всё нормально.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru