0

デイカレンダーを作成しようとしています。そのためにテーブルレイアウトを使用しています。次に、ここのデータにアクセスできるようにTextViewsを含むカスタム行(レイアウトxml)を定義したいと思います。これは、テーブルレイアウトの例です。

    <TableLayout
  android:id="@+id/appointmentListView"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TableRow 
    android:id="@+id/tableRow1">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        >

        <TextView
            android:id="@+id/unitNul"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00:00"/>

        <CustomRow><\CustomRow> //this is where I imagined I would have to put my    custom element

    </LinearLayout>


</TableRow>   

次に、時刻に基づいて正しい行に予定を入れます(スイッチロジックを介して)

私の質問は次のとおりです。各テーブル行にカスタム要素を追加するにはどうすればよいですか?これが最善の方法ですか?

補足:カスタムビュー要素を作成しようとしましたが、これを処理するには少し難しいようです。(これを説明する優れたガイドを知っている場合は、これもオプションです)私はすでに試しました:http://developer.android.com/guide/topics/ui/custom-components.html

4

1 に答える 1

2

次のようなXmlを作成します::

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
            android:id="@+id/tablerows"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/white"
            android:stretchColumns="0,1" >
        </TableLayout>

    </LinearLayout>

</LinearLayout>

次に、アクティビティクラスで、このような行やその他のビューを動的に追加します。

    TableRow row;
    TextView t1, t2;
    int dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,(float) 1,             getResources().getDisplayMetrics());
   row = new TableRow(context);
   row.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.FILL_PARENT,
                android.widget.TableRow.LayoutParams.WRAP_CONTENT));
t1 = new TextView(context);
t1.setTypeface(null, 1);
t1.setTextSize(15);
t1.setWidth(50 * dip);
t1.setPadding(20*dip, 0, 0, 0);
row.addView(t1);

次に、urテーブル(ここでは「myTable」)に次のような行を追加します::

myTable.addView(row, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
于 2012-10-16T09:06:53.490 に答える