Просто используйте 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 должно выравнивать снизу вверх и т. Д.
Обновление на основе комментария
Обычно вы устанавливаете контент с помощью setContentView(R.layout.your_layout)
в onCreate
(это приведет к увеличению разметки для вас).Вы можете сделать это вручную и вызвать setContentView(inflatedView)
, в этом нет никакой разницы.
Само представление может представлять собой одиночное представление (например, TextView
) или сложную иерархию макетов (вложенные макеты, поскольку все макеты являются самими представлениями).).
После вызова setContentView
ваша деятельность знает, как выглядит ее содержимое, и вы можете использовать (FrameLayout) findViewById(R.id.root_view)
для получения любого представления в этой иерархии (Общий шаблон (ClassOfTheViewWithThisId) findViewById(R.id.declared_id_of_view)
).