Я хочу, чтобы реализовать пользовательские ViewGroup
в моем случае, полученного из FrameLayout
, но я хочу, чтобы все виды ребенка добавлены из XML, которые будут добавлены не непосредственно в этой точке зрения, но в FrameLayout
, содержащихся в этом обычае ViewGroup
. Позвольте мне показать пример, чтобы понять это.Android настраиваемое представление группы делегат addView
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/frame_layout_child_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<FrameLayout
android:id="@+id/frame_layout_top"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</merge>
И я хочу, чтобы перенаправить добавление все дочернее к FrameLayout
с идентификатором frame_layout_child_container
.
Так, конечно, я отменяю Методы addView()
как этого
@Override
public void addView(View child) {
this.mFrameLayoutChildViewsContainer.addView(child);
}
Но уверен, что это не работает, потому что за это время mFrameLayoutChildViewsContainer
не добавляются в корне пользовательского вида.
Моя идея всегда держать некоторый взгляд на на вершине в этом контейнере frame_layout_top
и все мнения ребенка добавлены в пользовательский компонент должен перейти к frame_layout_child_container
Пример использования настраиваемого представления
<CustomFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</CustomFrameLayout>
Так что в этом регистр TextView
должен быть добавлен в frame_layout_child_container
Возможно ли делегировать добавление всех видов в дочерний элемент ViewGroup
, как я описал.
У меня есть другие идеи, как использование метода bringToFront()
, каждый раз, когда добавляется представление, чтобы сохранить их в правильном порядке оси z или, например, при добавлении вида, сохранить его в массиве и после того, как после раздувания пользовательского представления добавьте все представления этому ребенку FrameLayout
Предложите, что делать в этом случае, чтобы не ударить производительность при повторной установке всего макета при каждом добавлении нового вида, если его можно реализовать другим способом.
Вы действительно хотите расширить 'FrameLayout'? Атрибут 'orientation' работает только с' LinearLayout'. –
Мне вообще не нужен атрибут ориентации :), так что я отвечаю да – CROSP