更新日: 2016-11-15 (火) 20:50:46 (311d)

:Android

Android レイアウト 中身が違っても均等な幅のボックスを作る

中々言葉で表現するのは難しいので、下記を見てほしいのですが、(弊社で開発しているSmart動態管理というソフトの一画面です)

#ref(): File not found: "device-smart_location-before.png" at page "Android レイアウト 中身が違っても均等な幅のボックスを作る"

下の部分の「到着」「休憩」は同じ文字数だからよいのですが、上の「空車」「積込済」というのは字数が違いますよね。
なので、ボタンの幅がそろわず、見た目がよくないです。

均等な幅を実現するために android:layout_weight というパラメーターがありますが、これを指定していても、android:layout_width="wrap_content"などがあると、android:layout_widthの方が優先されてしまうんですね。

この部分のソースコードはこんな感じです。

       <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:paddingTop="10dp"
           android:paddingBottom="5dp" >
	        
          <Button
	            android:id="@+id/vacant_button"
	            android:layout_width="wrap_content"
	            android:layout_height="60dp"
                   android:layout_weight="0.5"
	            android:text="@string/vacant"
	            android:textSize="24sp"
	            android:background = "@drawable/vacant_button"
	            android:layout_marginRight="5dp"
	             />
           <Button
	            android:id="@+id/occupied_button"
	            android:layout_width="wrap_content"
	            android:layout_height="60dp"
                   android:layout_weight="0.5"
	            android:text="@string/occupied"
	            android:textSize="24sp"
	            android:background = "@drawable/occupied_button"
                />
        </LinearLayout>

android:layout_widthをなくすと、NullPointerEcceptionでエラーになります。
かといって、可変にしたいので、絶対的な大きさにもしたくない…
テーブルレイアウトは面倒…
そんな場合は、android:layout_width="0dp"として回避しています。

   //変更後のソースコード
       <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:paddingTop="10dp"
           android:paddingBottom="5dp" >

          <Button
	            android:id="@+id/vacant_button"
	            android:layout_width="0dp"
	            android:layout_height="60dp"
                   android:layout_weight="0.5"
                   android:text="@string/vacant"
	            android:textSize="24sp"
	            android:background = "@drawable/vacant_button"
	            android:layout_marginRight="5dp"
	             />
           <Button
	            android:id="@+id/occupied_button"
	            android:layout_width="0dp"
	            android:layout_height="60dp"
                   android:layout_weight="0.5"
	            android:text="@string/occupied"
	            android:textSize="24sp"
	            android:background = "@drawable/occupied_button"
                />
 	    
       </LinearLayout>

修正後の画面はこんな感じになります。

#ref(): File not found: "device-smart_location.png" at page "Android レイアウト 中身が違っても均等な幅のボックスを作る"


選択肢 投票
このページの情報は役に立った 2  
このページの情報は役に立たなかった 0  
どちらでもない 0  
このページが参照された数
Total: 7659, 今日: 7, 昨日: 0

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2016-11-15 (火) 20:50:46 (311d)