Просто використовуйте RelativeLayout
або FrameLayout
. Останнє дочірнє подання накладе все інше.
Android підтримує шаблон, якого Cocoa Touch SDK не робить: управління макетом.
Макет для iPhone означає розташувати все абсолютне (крім деяких факторів стреч). Макет в android означає, що діти будуть розміщені по відношенню один до одного.
Приклад (другий EditText повністю охоплює перший):
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/root_view">
<EditText
android:layout_width="fill_parent"
android:id="@+id/editText1"
android:layout_height="fill_parent">
</EditText>
<EditText
android:layout_width="fill_parent"
android:id="@+id/editText2"
android:layout_height="fill_parent">
<requestFocus></requestFocus>
</EditText>
</FrameLayout>
FrameLayout
це якийсь стек перегляду. Створено для особливих випадків.
RelativeLayout
досить потужний. Ви можете визначити такі правила, як подання A має вирівнювати батьківський макет знизу , подання B має вирівнювати A знизу вгору тощо
Оновлення на основі коментарів
Зазвичай ви встановлюєте вміст за допомогою setContentView(R.layout.your_layout)
in onCreate
(це роздує макет для вас). Ви можете зробити це вручну і зателефонувати setContentView(inflatedView)
, немає різниці.
Сам вигляд може бути одним видом (наприклад TextView
) або складною ієрархією макета (вкладені макети, оскільки всі макети - це самі подання).
Після виклику setContentView
ваша активність знає, як виглядає її вміст, і ви можете використовувати її (FrameLayout) findViewById(R.id.root_view)
для отримання будь-якого подання в цій ієрархії (загальний шаблон (ClassOfTheViewWithThisId) findViewById(R.id.declared_id_of_view)
).
layoutinflater
для захопленняrelativelayout
файлу xml макета, як я можу додати його до подання вмісту? Чи є спосіб отримати посилання на перегляд вмісту? Дякую