#android #android-layout
#Android #android-layout
Вопрос:
Есть такая структура вложенного макета:
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@android:color/black">
<ViewGroup
android:layout_width="94dp"
android:layout_height="54dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:id="@ id/view">
<ImageView
android:id="@ id/loggedInUserImageView"
android:layout_width="66dp"
android:layout_height="66dp"
android:layout_alignParentTop="true"
android:layout_alignEnd="@ id/view" />
</ViewGroup>
</RelativeLayout>
Но возникает проблема с рендерингом. Почему? В чем проблема?
Комментарии:
1. Закрываю вас
</RelativeLayout>
?2.
ViewGroup
являетсяabstract
классом. Вы не можете иметь экземплярViewGroup
на Java или использовать его как элемент в XML-ресурсе layout. Вам нужно использовать конкретный подклассViewGroup
(например,,FrameLayout
,LinearLayout
,RelativeLayout
,TableLayout
,ConstraintLayout
).
Ответ №1:
В этом случае у вас не может быть дочернего элемента ViewGroup. Потому что у вас нет атрибута / свойства для позиционирования дочернего представления. Таким образом, он выдаст ошибку при рендеринге. У вас есть все варианты использования различных макетов, предоставляемых Android, поскольку они также расширяются только из ViewGroup.
Если вы хотите использовать ViewGroup, лучше расширьте его, а затем используйте расширенный класс.
Надеюсь, это поможет вам понять.
Ответ №2:
Вы не можете использовать ViewGroup
внутри XML-файла, использовать LinearLayout
, RelativeLayout
и т.д. Или создать пользовательский ViewGroup
, расширив его.
Ответ №3:
Вы пытаетесь создать экземпляр абстрактного класса (ViewGroup). Создайте свой пользовательский вид, который расширяет ViewGroup, после этого вы имеете право создать свой пользовательский вид.