2011-12-23 6 views
1

Я пытаюсь добавить текстовое представление после Listview (в нижней части списка). (API 7)TextView в нижней части ListView - api 7

По какой-то причине он выглядит сверху.

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

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0c46a6" 
     android:orientation="vertical" android:gravity="center_horizontal"> 

     <TextView 
       android:id="@+id/skypename" 
       android:layout_width="0dip" 
         android:layout_height="0dip" 
         android:layout_weight="1"   
       android:textColor="#FFFFFF" android:textSize="12pt"/> 
    </LinearLayout> 

<ListView android:id="@+id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:drawSelectorOnTop="false" />   

</LinearLayout> 

ответ

5

Вы используете LinearLayout с вертикальной ориентацией, и вы определили TextView до того ListView. Поэтому первый TextView будет отображен после этого ListView.

Использовать RelativeLayout и использовать android:layout_alignParentBottom="true" для TextView для выравнивания в нижней части родителя и android:layout_above="@+id/linearLayout1" для просмотра списка, чтобы сохранить listview в верхней части текстового поля.

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

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0c46a6" 
     android:orientation="vertical" android:gravity="center_horizontal" 
     android:layout_alignParentBottom="true"> 

     <TextView 
       android:id="@+id/skypename" 
       android:layout_width="0dip" 
         android:layout_height="0dip" 
         android:layout_weight="1"   
       android:textColor="#FFFFFF" android:textSize="12pt"/> 
    </LinearLayout> 

<ListView android:id="@+id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:drawSelectorOnTop="false" android:layout_above="@+id/linearLayout1"/>   

</RelativeLayout> 
1

Здесь вы можете сделать, как это ..

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

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0c46a6" 
     android:orientation="vertical" android:gravity="center_horizontal"> 

     <TextView 
       android:id="@+id/skypename" 
       android:layout_width="0dip" 
       android:layout_height="0dip" 
       android:layout_weight="1"   
       android:textColor="#FFFFFF" android:textSize="12pt"/> 
    </LinearLayout> 

<ListView android:id="@+id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:drawSelectorOnTop="false" 
     android:layout_above="@+id/bottom" /> 

    <TextView 
       android:id="@+id/bottom" 
       android:layout_alignParentBottom="true" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#FFFFFF" 
       android:textSize="12pt"/> 

</RelativeLayout> 
+1

Не работает правильно. – Dikobraz

-1

Если вы предоставляете свойства как заполняющие по высоте и ширине, то вы никогда не увидите текст ниже списка.

Вы можете сделать одну вещь: поставить высоту как фиксированную dp, а затем разместить текст ниже списка.

1

Я переделал свой LinearLayout в RelativeLayout, но это было не так просто, как я думал. В моем случае у меня был TextViews выше и ниже ListView.

Для того, чтобы ListView не охватывал ни один из TextViews, мне пришлось использовать «layout_below» и «layout_above» в макете, который содержит ListView. Как это для макета списка-просмотры:

 android:layout_below="@+id/top_layout" 
     android:layout_above="@+id/bottom_layout" 

Когда я писал это с нижней TextView:

android:layout_below="@+id/listview_layout" 

список покрыла (= не работает).

Итак, трюк, похоже, является размещением тегов layout_below и layout_above.

Другим решением (которое не требует RelativeLayout) является добавление нижнего колонтитула в ваш список. Например:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    v = inflater.inflate(R.layout.main_layout, container, false); 
    myItemAdapter = new ItemAdapter(this, com.example.app.R.layout.listitem, theList); 
    View footer = inflater.inflate(R.layout.notify_row, null); 
    mListView.addFooterView(footer); 
    mListView.setAdapter(myItemAdapter); 
    return v; 
    } 

Для этого решения вам нужно будет создать файл макета для вашего представления снизу. Также вы должны вызвать addFooterView перед вызовом setAdapter.

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