0

レイアウトに問題があります。私のコードでは、LayoutInflaterが次のxmlをレイアウトとして設定しており、学校の時間割を表示するために数回ループします。イベントは、relativelayoutのmarginBottomとTopを50dpに設定しましたが、なぜすべてのレイアウトがまだくっついているのですか?

これがxmlです:

    <RelativeLayout
        android:id="@+id/left_part"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <TextView
            android:id="@+id/table_day"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_above="@+id/table_date"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:gravity="center"
            android:text="@string/table_day"
            android:textSize="@dimen/table_day_size" />
        <TextView
            android:id="@+id/table_date"
            android:layout_width="match_parent"
            android:layout_height="14dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:gravity="center"
            android:text="@string/table_date"
            android:textSize="@dimen/table_date_size" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/center_part"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/left_part"
        android:layout_alignTop="@+id/left_part"
        android:layout_toRightOf="@+id/left_part" >

        <RelativeLayout
            android:id="@+id/center_part1"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true" >

            <TextView
                android:id="@+id/table_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/table_time"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textSize="@dimen/table_timelocationclass_size" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/center_part2"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/center_part1" >
            <TextView
                android:id="@+id/table_subject"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:padding="1dp"
                android:gravity="center_vertical"
                android:text="@string/table_subject"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textSize="@dimen/table_subject_size" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/center_part3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/center_part2" >
            <TextView
                android:id="@+id/table_lecturer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:text="@string/table_lecturer"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textSize="@dimen/table_lecturer_size" />
        </RelativeLayout>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/right_part"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/center_part"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/center_part"
        android:layout_toRightOf="@+id/center_part" >

        <RelativeLayout
            android:id="@+id/right_part1"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true" >

            <TextView
                android:id="@+id/table_location"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="@string/table_location" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/right_part2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/right_part1" >

            <TextView
                android:id="@+id/table_class"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="@string/table_class" />

        </RelativeLayout>
    </RelativeLayout>

印刷画面は次のとおりです。

ここに画像の説明を入力してください

これがループです:

LinearLayout ll = (LinearLayout)findViewById(R.id.main_table);
ll.removeAllViews();

        //set table layout
        for(int i=0;i<tableRow.size();i++)
        {
            LayoutInflater inflater = getLayoutInflater();
            View perClassTable = inflater.inflate(R.layout.perclass_table, null);
            TextView table_day = (TextView)perClassTable.findViewById(R.id.table_day);
            TextView table_date = (TextView)perClassTable.findViewById(R.id.table_date);
            TextView table_time = (TextView)perClassTable.findViewById(R.id.table_time);
            TextView table_location = (TextView)perClassTable.findViewById(R.id.table_location);
            TextView table_class = (TextView)perClassTable.findViewById(R.id.table_class);
            TextView table_subject = (TextView)perClassTable.findViewById(R.id.table_subject);
            TextView table_lecturer = (TextView)perClassTable.findViewById(R.id.table_lecturer);
            table_day.setText(date[i].substring(0, 3));
            table_date.setText(date[1].substring(4,13));
            table_time.setText(time[i]);
            table_location.setText(loca[i]);
            table_class.setText(clas[i]);
            table_subject.setText(subj[i]);
            table_lecturer.setText(lect[i]);

            //testing
            ll.addView(perClassTable);
        }
4

3 に答える 3

0

ARelativeLayoutは、子を上から下に評価します。したがって、のようなものを使用する場合はandroid:layout_above="@+id/table_date"、の後に来る必要がありますtable_date

<RelativeLayout
    android:id="@+id/left_part"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >

    <TextView
        android:id="@+id/table_date"
        android:layout_width="match_parent"
        android:layout_height="14dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:gravity="center"
        android:text="@string/table_date"
        android:textSize="@dimen/table_date_size" />

    <TextView
        android:id="@+id/table_day"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_above="@+id/table_date"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:gravity="center"
        android:text="@string/table_day"
        android:textSize="@dimen/table_day_size" />

</RelativeLayout>

ここでは、テキストビューを交換しました。

于 2012-11-28T15:13:13.293 に答える
0

私にはリストのように見えます。ListViewを調べてください。アダプタを正しく実装すると、ビューもリサイクルされます。

于 2012-11-28T15:31:16.083 に答える
0

ループLayoutParamsの最後に、膨らんだビューに余裕を持たせて設定します。for

    //...
    table_subject.setText(subj[i]);
    table_lecturer.setText(lect[i]);

    // set some proper LayoutParams for the inflated View which is going to be added
    // to the ll LinearLayout
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    // set some margins to distance the rows 
    lp.topMargin = 100; 
    lp.bottomMargin = 100; 
    // add the inflated view with to ll with the LayoutParams above.
    ll.addView(perClassTable, lp);
}

は、幅/高さ、マージン、レイアウト配置ルールなどのレイアウト属性を一般的に保持LayoutParamsするサブクラスで使用するように設計された特別なクラスです。また、これらのラッパーをすべて削除し、親に直接設定することで、レイアウトファイルを改善できます。行数が多い場合は、galexが回答で述べたように、ウィジェットも確認​​することをお勧めします。ViewGroupRelativeLayoutsTextViewsRelativeLayoutListView

于 2012-11-28T16:37:37.863 に答える