2012-04-09 4 views
0

私は1つの行に2つのビュー(Nと言う)を配置しようとしています。スクリーン。私はLinearLayout(layoutWeight)を使用してこれを実現する方法を認識していますが、この行にある特定のビューの下に表示される別のレイアウトが必要です。つまり、これらのビューはすべてLinearLayoutにラップされているため、このレイアウト内に追加のレイアウトを配置することはできません(明白な理由により)、LinearLayoutの特定のビューを参照してその下にビューを配置することはできません。自分自身を説明するのを助けるためのいくつかの視覚的な補助:それぞれが同じスペースを取るようにビューを配置する

enter image description here

だから私は正確に上記の3番目のボックスの下に灰色のボックスを表示したいです。現在、画面の幅をN等分し、適切なマージンをこのビューに設定することで、これを実現しています。しかし、私はこれをとても好きではありません。それを達成するためのより良い方法はありますか?

+0

は、それらの行はありますか?とボタンの下に? – sdfwer

+0

N個のアイテムを持ち、それぞれが幅から1/Nを取る単一の行です。下の灰色のボタンは実際には上記のメニューからi番目のボタンのすぐ下に配置する必要がある別のLinearLayout /という2つのボタンです。 – asenovm

答えて

1

このように、中央が3番目のボックスの中央の真下になるように1つのViewまたはViewGroupを配置したいですか?

その可能性はないが、非常にエレガント:2行目の3個の細胞に参加し、そのテーブルのスパン内の中心にビューを使用するlayout_span:

アイデアはテーブルレイアウトとAndroidを使用することです。

例テーブルのレイアウト:

<TableRow> 

    <TextView 
     android:layout_column="0" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="0" /> 

    <TextView 
     android:layout_column="1" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="1" /> 

    <TextView 
     android:layout_column="2" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="2" /> 

    <TextView 
     android:layout_column="3" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="3" /> 

    <TextView 
     android:layout_column="4" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="4" /> 
</TableRow> 

<TableRow> 

    <TextView 
     android:layout_column="0" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="0" /> 

    <RelativeLayout 
     android:layout_span="3" 
     android:padding="3dip" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:gravity="center" 
      android:text="Button 1,2,3" /> 
    </RelativeLayout> 

    <TextView 
     android:layout_column="4" 
     android:gravity="center" 
     android:padding="3dip" 
     android:text="4" /> 
</TableRow> 

1

アンドロイドのxmlが本当に難しいので、これは私の考えです。

リニアレイアウトの内部に2つの線形レイアウトを作成し、もう1つは相対レイアウトでLayoutWeightを使用して、元の線形レイアウトを使用して両方を分離します。

+0

下のボタンの幅が画面の幅の1/Nより広いために表示されないことがあります。 :\ – asenovm

+0

相対レイアウトの内側には、行を調整可能にし、その底部の最大値まで引き伸ばす必要があるuhh tableLayoutを追加します。それ以外の場合は、相対レイアウトの代わりに線形レイアウトを使用してください。 – sdfwer