Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alignment issues with two-line button

I'm trying to figure out why a two-line button in my application is being shifted a couple of pixels lower than the other buttons:

An error dialog.  The error message is "Error: No internet connection.  Please check your connection settings and try again."  There are three buttons beneath the error message: Retry, Cancel, and Network Settings.  The Network Setting button is a few pixels lower than the other buttons.

This does not happen if I shorten the text on the third button until it fits on one line, which tells me it has something to do with the line break. Adding android:layout_gravity="top" to the button's layout doesn't seem to help. Any ideas what might be causing this one?

Edit: Here's the layout XML file:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:layout_height="wrap_content"               android:orientation="vertical"               android:gravity="center_horizontal"               android:padding="10dip"               android:layout_width="wrap_content">    <TextView android:id="@+id/error_text"             android:layout_height="wrap_content"             android:layout_marginBottom="5dip"             android:text="Place holder"             android:layout_width="wrap_content"             android:textSize="17dip"/>    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"                 android:layout_height="wrap_content"                 android:orientation="horizontal"                 android:gravity="center_horizontal"                 android:padding="10dip"                 android:layout_width="wrap_content">     <Button android:id="@+id/ok_button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="@string/ok"             android:textColor="@color/black"             android:textStyle="bold"/>      <Button android:id="@+id/cancel_button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginLeft="8dip"             android:text="@string/cancel_login"             android:textColor="@color/black"             android:textStyle="bold"             android:visibility="gone"/>      <Button android:id="@+id/third_button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginLeft="8dip"             android:textColor="@color/black"             android:textStyle="bold"             android:visibility="gone"/>   </LinearLayout> </LinearLayout> 
like image 455
Amanda S Avatar asked Aug 02 '11 20:08

Amanda S


1 Answers

A horizontal LinearLayout aligns the baselines of all its child controls by default. So the first line of text in your multi-line button is vertically aligned with the single line of text in the other buttons.

To disable this behaviour, set android:baselineAligned="false" on the LinearLayout.

like image 168
Karu Avatar answered Sep 28 '22 03:09

Karu