2017-08-20 18 views
-3

私は3つのボタンを画面の一番下に1行に配置する必要があります。以下はアクティビティxmlのコードです。 3つのボタンが偶数のスペースを取るようにするには、それぞれをLinearLayout内にラップし、レイアウトをandroid:layout_weightに、そしてandroid:layout_gravityを中央に設定します。LinearLayoutの下に3つのボタンを均等に配置する方法は?

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="90px" 
     android:background="#88104502" 
     android:orientation="horizontal"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:orientation="horizontal" 
      android:layout_weight="1"> 
      <Button 
       android:id="@+id/goBack" 
       android:layout_width="70px" 
       android:layout_height="80px" 
       android:gravity="center" 
       android:background="@drawable/back" 
       android:onClick="toHomePage" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:orientation="horizontal" 
      android:layout_weight="1"> 
      <Button 
       android:id="@+id/findPlant" 
       android:layout_width="70px" 
       android:layout_height="80px" 
       android:gravity="center" 
       android:background="@drawable/flowr" 
       android:onClick="toImagePage" /> 
     </LinearLayout> 

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

      <Button 
       android:id="@+id/plantList" 
       android:layout_width="70px" 
       android:layout_height="80px" 
       android:gravity="center" 
       android:background="@drawable/list" /> 
     </LinearLayout> 
    </LinearLayout> 

ただし、ボタンはLinearLayoutの中心にはありません。

enter image description here

あなたは各ボタンがのLinearLayoutの左側に配置されていることを見ることができます。下のスクリーンショットです。どのようにそれらの中心に位置させるには?

+1

なぜ3つの異なるリニアレイアウトを使用していますか?また、1つのメインLinearLayoutを使用し、3つのボタンに等しいウェイトを与えることもできます。 –

答えて

0

これを試してください。あなたのコードは線形レイアウトに重力を与えるだけです.LinearLayoutの多くを使用したくない場合は、LinearLayoutを1つだけ使用し、3つのボタンに等しい重みを与えます。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="90px" 
    android:background="#88104502" 
    android:orientation="horizontal"> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:orientation="horizontal" 
    android:gravity="center" 
    android:layout_weight="1"> 
    <Button 
     android:id="@+id/goBack" 
     android:layout_width="70px" 
     android:layout_height="80px" 
     android:gravity="center" 
     android:background="@mipmap/ic_launcher" 
     android:onClick="toHomePage" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:layout_weight="1"> 
    <Button 
     android:id="@+id/findPlant" 
     android:layout_width="70px" 
     android:layout_height="80px" 
     android:gravity="center" 
     android:background="@mipmap/ic_launcher" 
     android:onClick="toImagePage" /> 
</LinearLayout> 

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

    <Button 
     android:id="@+id/plantList" 
     android:layout_width="70px" 
     android:layout_height="80px" 
     android:background="@mipmap/ic_launcher" /> 
</LinearLayout> 

0

パディングとして空のビューを作成することができます。この方法では、アイコンの幅が異なる場合でも間隔は常に同じになります。あなたがイメージを持つボタンをしたい場合は

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="90px" 
    android:background="#88104502" 
    android:orientation="horizontal"> 

     <View 
      android:layout_weight="1"      
      android:layout_width="0dp" 
      android:layout_height="0dp"/> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="70px" 
      android:layout_height="80px" 
      android:background="@drawable/list" /> 
     <View 
      android:layout_weight="1"      
      android:layout_width="0dp" 
      android:layout_height="0dp"/> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="70px" 
      android:layout_height="80px" 
      android:background="@drawable/list" /> 
     <View 
      android:layout_weight="1"      
      android:layout_width="0dp" 
      android:layout_height="0dp"/> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="70px" 
      android:layout_height="80px" 
      android:background="@drawable/list" /> 
     <View 
      android:layout_weight="1"      
      android:layout_width="0dp" 
      android:layout_height="0dp"/> 
</LinearLayout> 
1

あなたの代わりに、ボタンののImageButtonを使用することができ、そして、あなたがのImageButtonに直接重みを与えることができ、ネストされたレイアウトを使用して、このようにしてみてください、と代わりにすることができます。

ボタンのスタイルを設定する場合は、app:backgroundTintを使用して背景を変更することができるという点でAppCompatImageButtonを使用できます。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="90px" 
    android:background="#88104502" 
    android:weightSum="3" 
    android:orientation="horizontal"> 

    <ImageButton 
     android:id="@+id/goBack" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:onClick="toHomePage" 
     android:src="@drawable/ic_action_name"/> 

    <ImageButton 
     android:id="@+id/findPlant" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:onClick="toImagePage" 
     android:src="@drawable/ic_action_name"/> 

    <ImageButton 
     android:id="@+id/plantList" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:onClick="toImagePage" 
     android:src="@drawable/ic_action_name"/> 


</LinearLayout> 
+0

これは、すべての回答の中で最もクリーンな**(しかも**最速の**)レイアウトです。 **シンプル:演奏**は重要です。 +1 –

0

重力の代わりlayout_gravityを使用してください。

関連する問題