2016-04-09 38 views
5

私は非常に Android App Developmentには新しく、Androidスタジオで次のボタンレイアウトを実現しようとしています。Androidスタジオ2列LinearLayoutの作成方法

[App design[1]

アイブ氏は、リニアレイアウトを使用しようとしてきたが、私は右のそれを得ることができませんでした。私が代わりに次の行にボタンを追加するのは、彼らはただ一緒に踏み付け取得し、リニアレイアウトに別のボタンを追加した場合

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:weightSum="1"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:background="#016eff" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_margin="10dp" 
     android:textColor="#ffffff" 
     android:layout_weight="0.48" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button2" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:background="#016eff" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_margin="10dp" 
     android:textColor="#ffffff" 
     android:layout_weight="0.48" /> 
</LinearLayout> 

これに伴う問題は、あります。

LinearLayoutが各行に2つのウィジェットしか持たないようにすることができますか、別の修正を提供できますか?

+1

linearlayoutの代わりにtablelayoutを試してみてください – Vishwa

+0

さて、悪いことに今すぐ試してみてください。 –

+0

@Vishwaありがとう、私はそれを働かせることができた! –

答えて

8

LinearLayoutは、達成しようとしているものであれば問題ありません。 LinearLayoutオブジェクトのweight属性とorientation属性を見てください。 Linear Layout

そして、あなたが望むもの、あなたがこのような例のために行うことができます。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:gravity="center"> 

     <TextView 
      android:text="Whatever You Want Here" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:textSize="36sp"/> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 1" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 2" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 3" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 4" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 5" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 6" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 7" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 8" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

出力:

Linear Layout 2 Columns

そして、あまりにも多くの重量を入れ子にすることは、いくつかの否定的であってもよい属性ので、気を付けますパフォーマンスの問題。

1

よし、みんな:-)

すべてのヘルプははるかに高く評価されるおかげで、私はVishwaさんのコメントへの修正のおかげを見つけることができました。 しかし、実際には、LinearLayoutに2つの列があるようにする方法は見つかりませんでした。

代わりに、私はTableLayoutに変更し、列全体に0,を貼り付けました。私のXMLはどのように見えてしまったのでしょうか?

<TableLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:stretchColumns="0,1"> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Events" 
      android:id="@+id/eventButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Absentee" 
      android:id="@+id/absenteeButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Contacts" 
      android:id="@+id/contactsButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Alerts" 
      android:id="@+id/alertButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Links" 
      android:id="@+id/linksButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Newsletter" 
      android:id="@+id/newsletterButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textSize="40px" 
      android:textStyle="normal" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Kamar" 
      android:id="@+id/kamarButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="News" 
      android:id="@+id/newsButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textSize="40px" 
      android:textStyle="normal" /> 
    </TableRow> 

</TableLayout> 
1

(それは私のデザインを取得することで余分なものを持っている)あなただけのボタンの各ペアの周りandroid:orientation="horizontal"で別々のLinearLayoutを置きます。親のLinearLayaoutはandroid:orientation="vertical"で、重みは各水平LinearLayoutにある必要があります。

+0

問題のマルチソリューションをお持ちいただきありがとうございました。 –

+1

ネストされたLinearLayoutsを使用すると、1行のボタンを別々に並べ替える必要がある場合や、レイアウトの数が異なる1行にする場合など、TableLayoutよりも柔軟性があります。 – Christine