Android программно включает расположение (т.е. без XML)

Таким образом, я создал подкласс Действия под названием CustomTitlebarActivity. По существу каждый основной вид деятельности в моем приложении будет иметь пользовательскую строку заголовка со многими типичными функциями, такими как кнопка "Домой", заголовок, кнопка поиска, и т.д. В моей текущей реализации я все еще явно использую включать оператор в расположении XML для каждого CustomTitlebarActivity:

<include layout="@layout/titlebar" />

Кажется естественным, что я должен смочь сделать это в CustomTitlebarActivity. У меня есть два вопроса: Что может заменить код, это включает тег, и куда я должен поместить код? (Мой первый инстинкт должен был бы поместить его в setContentView метод CustomTitlebarActivity.)

На связанной ноте я ценил бы понимание лучших способов снова использовать код android UI (даже если по сути строки заголовка должны варьироваться немного между операциями.)

35
задан Shruti 16 March 2012 в 07:22
поделиться

1 ответ

Лично,Вероятно, я бы написал свой подкласс 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 здесь).

18
ответ дан 27 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: