0

我使用 monodevelop ti android 开发。我想在从互联网加载的列表末尾添加一个加载项。我将此 xml 文件用于此提议:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="125dp">
<RelativeLayout
    android:id="@+id/LoadingRealtive"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dip"
    android:background="@drawable/List_Menu_Bg"
    >
    <ProgressBar
        android:id="@+id/loadingListItems"
        style="@style/GenericProgressIndicator"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
    <TextView
        android:text="Loading..."
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/loadingListItems"
        android:id="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:textColor="#6b6b6b" />
</RelativeLayout>
<RelativeLayout
    android:id="@+id/MainRelative"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dip"
    android:background="@drawable/List_Menu_Bg">...MyListItems    </RelativeLayout></LinearLayout>

并在查看我的列表时使用了以下代码:

public override View GetView (int position, View convertView, ViewGroup parent)
    {
        View vi = convertView;

        try {

            if (convertView == null)
                vi = activity.LayoutInflater.Inflate (Resource.Layout.list_row, parent, false);

            RelativeLayout LoadingRelative=(RelativeLayout ) vi.FindViewById (Resource .Id.LoadingRealtive);
            RelativeLayout ContentRelative=(RelativeLayout ) vi.FindViewById (Resource .Id.MainRelative );



            if(Data [position ] == null)
            {
                ContentRelative .Visibility =ViewStates.Gone ;
                LoadingRelative .Visibility = ViewStates.Visible ;
            }else{
                ContentRelative .Visibility =ViewStates.Visible  ;
                LoadingRelative .Visibility = ViewStates.Gone  ;<...MyListCodes...>
            }
        } catch (Exception ex) {
            Common.HandleException (ex);
        }
        return vi;
    }

它工作正常。问题是加载布局加载wrap_content,而它必须加载fill_parent。我不明白为什么会这样?有谁能够帮助我?

4

1 回答 1

0

当使用 linearlayout 作为 wrapperview 时,您应该将 android:weight 赋予其具有 fill_parent 属性的子视图。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="125dp">
<RelativeLayout
    android:id="@+id/LoadingRealtive"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dip"
    android:background="@drawable/List_Menu_Bg"
    android:weight="1"
    >
    <ProgressBar
        android:id="@+id/loadingListItems"
        style="@style/GenericProgressIndicator"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
    <TextView
        android:text="Loading..."
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/loadingListItems"
        android:id="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:textColor="#6b6b6b" />
</RelativeLayout>
<RelativeLayout
    android:id="@+id/MainRelative"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dip"
    android:background="@drawable/List_Menu_Bg"        
    android:weight="1" >
 </RelativeLayout>

于 2012-12-10T12:03:10.977 回答