Лично я, вероятно, записал бы свой Activity
подкласс всегда setContentView
в файл макета, содержащий вертикальную fill_parent
LinearLayout
, содержащую только мою строку заголовка: -
<LinearLayout android:id="@+id/custom_titlebar_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--titlebar here-->
</LinearLayout>
Тогда я бы определил абстрактный getContentAreaLayoutId()
метод в CustomTitlebarActivity
, который возвращает макет ID
содержимого под заголовком заголовка для каждого подкласса; база onCreate()
из CustomTitlebarActivity
будет тогда просто вызывать
setContentView(R.layout.custom_titlebar_activity_frame_from_above);
View.inflate(this, getContentAreaLayoutId(), findViewById(R.id.custom_titlebar_container));
В качестве альтернативы вы можете использовать свой абстрактный метод для получения области содержимого, возвращающей View
, а не int
, что дает вам больше гибкости для динамического построения ваших представлений (но вы заставляете их самостоятельно раздувать в простом просто сбросьте этот макет XML здесь case).