0

これを実現するために、RelativeLayout と Linearlayout の両方を使用しました (画像内)!ここに画像の説明を入力

  1. 相対レイアウトを使用して、ボタンを固定幅で、marginLeft と marginRight で配置しました。問題は、デバイスの画面が大きい場合、左右のマージンがあまり拡大されず、ボタンの幅も固定されることです。

     <RelativeLayout>
    
        <!-- Row1 -->
    
    <Button1
      alignParentTop = "true" 
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
    <button2
     alignParentTop ="true"
     center="@id/Button1"
     marginLeft = "5dip"
     marginRight="5dip"
     width="80dip" />
    
    <button2
     alignParentRight="true"
     marginLeft = "5dip"
     marginRight="5dip"
     width="80dip"/>
    
    
    <!-- Row2 -->
    
    <Button3
      below="button1"
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
    <Button4
      below="button2"
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
        </RelativeLayout>
    
  2. RelativeLayout の親を使用して、ボタン付きの 2 つの水平方向の線形レイアウトを作成しました。ボタンの幅が 0dip で重みが 1 になりました。ただし、2 行目を作成できません。

<RelativeLayout> <linearLayout orientation="horizontal"> <!-- Row1 --> <Button1 width="0dip" weight="1"/> <button2 width="0dip" weight="1"/> <button2 width="0dip" weight="1"/> </linearLayout> <!--Row2--> <linearLayout orientation="horizontal"> Couldn't using this approach </linearLayout> </RelativeLayout>
4

4 に答える 4

2

他の人が提案したように、確かにTableLayoutまたはGridLayoutを使用できますが、LinearLayout ソリューションを変更する場合は、わずかな変更でこれを実現できます。このようなもの:

<LinearLayout android:orientation="vertical">   
   <!-- Row1 -->
   <LinearLayout android:orientation="horizontal">
     <Button    
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>
   </LinearLayout>

  <!-- Row2 -->
  <LinearLayout android:orientation="horizontal" android:weightSum="3">    
     <Button    
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>
  </LinearLayout>
</LinearLayout>

2 行目のweightSum合計は 3 になりますが、各ボタンの重みは 1 しかないことに注意してください。

于 2013-09-19T23:50:00.723 に答える
0

@prijupaul が言ったように、Gridlayout を使用できますが、単純にするために LinearLayout を使用します。RelativeLayout ですべてをラップしている理由がわかりません。これを回避できると思います。

<linearLayout  orientation="vertical">   
   <LinearLayout orientation="horizontal">
     <!-- Row1 -->
     <Button1     
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="1"/>
   </LinearLayout>

  <!-- Row2 -->
  <LinearLayout orientation="horizontal">    
     <Button1     
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="2"/>
</LinearLayout>
于 2013-09-19T23:29:36.730 に答える
0

この機能を実現するには、Gridlayout を使用します。メインへのコードが少なくなり、向きの変更の処理が改善されました。

于 2013-09-19T23:25:22.727 に答える
0

私の理解が正しければ、ボタンを伸ばして画面いっぱいに広げてほしいと思っています。代わりにTableLayoutを使用してみてください。例はこちらです。基本的に、ボタンにテーブルの行と列を使用し、stretchColumns を指定して、列 (およびボタン) がスペースを埋めるように引き伸ばされるようにします。

于 2013-09-19T23:28:03.740 に答える