2012-05-14 7 views
1

Я продолжаю просматривать разные сообщения, и все они имеют нижний колонтитул, чтобы оставаться на экране.Android - как добавить простой нижний колонтитул?

Но я хочу, чтобы нижний колонтитул появлялся на каждой странице. Некоторые из моих страниц не имеют свитка, но некоторые делают. Всякий раз, когда есть свиток, я хотел бы, чтобы нижний колонтитул появился ниже свитка. Как это можно сделать?

Например, если у меня есть эта страница:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 

<ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" >  

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     >  

<TextView 
    android:id="@+id/page_exlain"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Some text that either extends far down or is pretty short." 
    android:layout_marginTop ="20dp" 
    />   


</LinearLayout> 

</ScrollView> 

</LinearLayout> 

Что такое хороший способ добавить колонтитул к этому, что не обязательно появляются выше складки?

Спасибо!

ответ

4

Мой способ сделать это, имея два линейных макета внутри родительского макета. Первый - это то, что я называю областью содержимого, и будет иметь вес 1, то есть он попытается занять столько места, сколько может, из родительского представления. С другой стороны, макет нижнего колонтитула не будет иметь веса и останется там с высотой, соответствующей содержимому внутри, даже если другое представление (область содержимого) пуст.

Вы можете добавить scrollview или любой другой тип макета внутри части этого макета, не нарушая расположения двух элементов и не беспокоясь о позиции нижнего колонтитула, так как он всегда будет внизу экран.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/main" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" > 
<LinearLayout 
        android:id="@+id/content" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:orientation="vertical" > 
</LinearLayout> 
<LinearLayout 
        android:id="@+id/footer" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" > 
</LinearLayout> 

С небольшим содержанием добавляется к предыдущему коду, в итоге вы с чем-то вроде этого, обратите внимание, что это чрезвычайно упрощена. У вас не будет проблем с изменением ваших потребностей до тех пор, пока вы поймете весовое свойство на месте.

enter image description here

Вам просто нужно лечить «содержание» LinearLayout, как если бы это был один из родителей, вставляя scrollviews или любые ваши нуждаясь и забыть о сноске. Обратите внимание, что если сноска является рекурсивным, то есть вы собираетесь использовать его несколько раз, вы можете загрузить его в XML напрямую, без его копирования, чтобы все макеты

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

Где @layout/footer это файл XML в вашем layouts с содержимым нижнего колонтитула, который вы хотите повторно использовать. Это практически то же самое, что добавлять его вручную, но с удобством не поддерживать его в нескольких файлах.

Надеюсь, что я помог.

+1

+1 ... В зависимости от структуры вашего приложения, я хотел бы абстрагировать все это на базовую активность и создавать защищенные методы для добавления контента в общий «макет». Таким образом, все будущие действия так же легко заполняются, как setContentView(). – Phix

Смежные вопросы