Посмотрев на ваш макет (на устройстве), я не уверен, почему он демонстрирует такое странное поведение.При отладке макетов мне нравится помещать фоновые цвета в представления, чтобы вы могли более четко видеть пространство, которое они занимают.Если мы удалим все отступы, мы увидим, что кнопки просто не находятся на одной верхней строке.Если мы применим android:gravity="center_vertical"
к содержащему LinearLayout
, мы увидим, что первые две кнопки расположены по центру, а последняя плотно прилегает к верхнему краю.
Одним из решений этой проблемы является просто переписать внутренний контейнер, используяa RelativeLayout
:
<RelativeLayout
android:layout_height="wrap_content"
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:layout_toRightOf="@id/ok_button"
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:layout_toRightOf="@id/cancel_button"
android:textColor="@color/black"
android:textStyle="bold"
android:visibility="gone"/>
</RelativeLayout>
Из моего тестирования, используя RelativeLayout
, вы можете заставить все кнопки сидеть на одном верхнем крае.