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 をラッパー ビューとして使用する場合は、fill_parent 属性を持つ子ビューに android:weight を指定する必要があります。

<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 に答える