Являются ли макеты такими же, как группы просмотра?

#android

#Android

Вопрос:

Я немного смущен, когда я объявляю макет в XML, и я вызываю:

 R.layout.idname
  

считается ли это ViewGroup?

Комментарии:

1. Какому XML-тегу вы присвоили этот идентификатор? Почти все считается представлением, а не VIEWGROUP.

2. Допустим, RelativeLayout

3. RelativeLayout может быть преобразован в ViewGroup да.

Ответ №1:

Это зависит от виджета, который вы объявили в своем макете. Например, вы можете объявить single TextView внутри своего макета. TextView s — это представления, а не ViewGroup . Например, если вы объявите LinearLayout , это будет ViewGroup . Если вы посмотрите на документацию, вы можете увидеть прямой и косвенный подкласс ViewGroup

Комментарии:

1. Но когда я захожу в findViewById и передаю R.layout.id по какой-то причине это не сработает.

2. вы должны предоставить идентификатор, а не макет, для findViewById

Ответ №2:

считается ли это ViewGroup?

Нет, это полный файл макета.

Являются ли макеты такими же, как группы просмотра?

Нет, один из них — это файл. A ViewGroup будет любым View , таким как a RelativeLayout , LinearLayout и т.д., Который содержит другие View s.

Из документов

ViewGroup — это специальное представление, которое может содержать другие представления (называемые дочерними).)

Комментарии:

1. Как получилось, что Android вносит изменения в R.layout. идентификатор и R.id.id ? Разве в некоторых случаях они не используются взаимозаменяемо? Например, setContentView использует R.Layout.

2. Это зависит от того, нужен ли вам идентификатор файла макета или одного View .

3. Хорошо, что, если сам макет является TextView, предполагается ли, что R.layout. идентификатор такой же, как R.id.id ? Я имею в виду, могу ли я использовать findViewById и передавать в R.layout.id ? Просто любопытно.

4. Посмотрите в свой R.java у вас есть файл public static final class layout { с идентификаторами для ваших файлов макета и public static final class id { для случаев, когда вам нужен идентификатор представления для вида или группы просмотра

5. Нет, вам нужно будет использовать R.id.someId, потому что это указывает ему искать в классе id из R.java . В противном случае это будет выглядеть в классе layout из R.java

Ответ №3:

Не совсем. Это зависит от того, какому XML-макету вы присвоили R.layout.idname.

TextView , ImageView , EditText для примеров НЕ являются группами просмотра.

FrameLayout , RelativeLayout , LinearLayout и т.д. Считаются группами просмотра.

Подсказка действительно в названии… группа просмотра. представление, которое может быть группировкой представлений.

Ответ №4:

Нет, макеты не совпадают с группами просмотра. Хотя каждый макет является ViewGroup , существуют группы просмотра, которые не являются макетами (например, ViewPager , ScrollView ). Что касается XML-файла в R.layout, это зависит от корневого элемента XML: если, например, это a LinearLayout — вы сможете привести его к ViewGroup , если это ImageView — это считается View .

Ответ №5:

Группа просмотра: представляет собой комбинацию представлений

Макеты: как должны сортироваться представления

В группе просмотра есть представления внутри нее, но то, как должны быть организованы представления, расположение представлений известно как макеты.

Например, линейная компоновка и относительная компоновка являются одновременно макетом и группой просмотра, потому что внутри них есть представления, а расположение представлений в них известно как макеты.