2012-01-25 9 views
0

TableLayout Androidで問題が発生しました。対称的な行/列を持つ表を作成したい、つまり、テキストが追加されていても、TextView内のすべてのTextViewが他のすべてと同様に同じ量のスペースを割り当てられるレイアウトです。Androidで対称テーブルを生成する

これは、XMLファイルではなくJavaコードを使用して行うことが重要です。

このレイアウトでは、2つのテーブルが隣り合っている必要があります。つまり、すべてのテーブルの画面サイズはわずか50%です。これにより、いくつかのLayoutParameterが使用できなくなる(FILL_PARENTなど)と思われますか?

これは私が試したものです:

for (String s : buffer) { 
      TextView tv = new TextView(this); 
      tv.setLayoutParams(new TableRow.LayoutParams(0x00, LayoutParams.WRAP_CONTENT, 1f)); 
      tv.append(s);  
      row.addView(tv, new TableRow.LayoutParams(LayoutParams.FILL_PARENT)); 
     } 

はまだかかわらず、悪い見えます。

+0

基本的に、あなたはすべての項目について1にサイズ(幅/高さ)を0にし、体重を設定し、用すべてのテーブル行 – njzk2

答えて

2

これは、整然とした方法で幅を共有する2つの列を作成します。

<TableLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableRow> 
     <!-- Set the width to 0dp and set layout_weight=1! on both Views--> 
     <TextView 
      android:text="This is text1, its pretty long but that shouldn't be a problem" 
      android:layout_marginLeft="1px" 
      android:background="#ff0000" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:text="Shorter" 
      android:background="#00ff00" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" /> 
    </TableRow> 
</TableLayout> 

編集:同じことが、今のコードで:

TableLayout layout = new TableLayout(this); 
    TextView t1 = new TextView(this); 
    t1.setBackgroundColor(Color.BLUE); 
    t1.setText("This is text1, its pretty long but that shouldn't be a problem"); 
    TextView t2 = new TextView(this); 
    t2.setBackgroundColor(Color.GRAY); 
    t2.setText("Shorter"); 

    TableRow row = new TableRow(this); 
    row.addView(t1, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f)); 
    row.addView(t2, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f)); 

    layout.addView(row); 
+0

私はそれに2つの問題があります:まず、プログラミングの2つの別々のTableLayoutsは、画面の各50%を調整して基づいています。第二に、私は、Javaの体裁やマージンを設定する方法はまったくありません。 –

+0

画面の50%は両方のレイアウトの画面の50%です。 。しかし、別のTableRowを追加することは "きれい"です。同じことをするコードを追加することも簡単です。 – Jens

+0

ええ、私はついにGoogleを使用することができました、ごめんなさい。 "tv.setLayoutParams(new LinearLayout.LayoutParams(0x00、LayoutParams.WRAP_CONTENT、1f));"を使用すると、 TextViewのテレビでは、実際にはur XMLのような非常に同じパラメータを与えるべきです。残念ながら、それは嘘つきに見えます。私は私のポストに表示するために使用されるコード全体を追加しました。 –

関連する問題