#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:
Группа просмотра: представляет собой комбинацию представлений
Макеты: как должны сортироваться представления
В группе просмотра есть представления внутри нее, но то, как должны быть организованы представления, расположение представлений известно как макеты.
Например, линейная компоновка и относительная компоновка являются одновременно макетом и группой просмотра, потому что внутри них есть представления, а расположение представлений в них известно как макеты.