Почему высота макета больше ожидаемой - PullRequest
0 голосов
/ 09 октября 2011

Может кто-нибудь объяснить, почему макет намного больше, чем кнопка по вертикали.Я использую WRAP_CONTENT для высоты макета.Также вторая кнопка просто исчезла.

Макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#f00"
    >
    <Button  
        android:id="@+id/Button01"  
        android:text="Button One big button"  
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"></Button>
    <Button  
        android:id="@+id/Button02"  
        android:text="Button Two"
        android:layout_toLeftOf="@id/Button01"   
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"></Button>
</RelativeLayout>

enter image description here

Я вижу, что это из-за использования тега layout_toLeftOf с привязкой (кнопка 01), ширина позиции которой равнане точно определены.Я ищу больше идей здесь.Кто-нибудь может скинуть ?? ?? 1009 *

Заранее спасибо.

РЕДАКТИРОВАТЬ:

  • Почему исчезает кнопка 2: Quiroga положила хороший ответ ниже
  • Почему высота макета увеличивается: эксперименты показывают, что это из-за ширины Button02 !!Платформа нажала кнопку 02 в невидимом месте слева от макета, но сжала ее до ширины одного символа.Например, если изменить текст кнопки 02 следующим образом

    android: text = "Btn 2"

    Затем вывод изменится на (высота макета уменьшена) enter image description here

Итак, нижняя строка - Убедитесь, что вы используете правильные параметры выравнивания.В противном случае некоторые ваши виды могут исчезнуть, и худший внешний вид может сильно отличаться от того, что вы ожидаете!

1 Ответ

2 голосов
/ 09 октября 2011

Изменить на это:

   <Button  
        android:id="@+id/Button02"  
        android:text="Button Two"
        android:layout_toRightOf="@id/Button01"   
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"></Button>

Я думаю, вы неправильно поняли параметр layout_toLeftOf.

Что заставляет вашу первую кнопку оставаться таким образом (Использование layout_toLeftOf):

             |<-- R Layout width-->| 
  |Button Two|Button One big button|
             |                     |
             |_____________________|

И чтобы понять проблему, я объясняю ее (но, возможно, я ошибаюсь):

Макет, помещенный в RelativeLayout, первые элементы, которые он видит в файле XML. Затем, если вы поместите wrap_content в кнопку и в RelativeLayout добавите то же самое, он сначала измеряет его размер, а затем вводит его. Выравнивая его по умолчанию с левой верхней россыпью, и устанавливая ширину RelativeLayout фиксированной, когда он видит, что нет ничего mre в правом, нижнем направлении.

P.S: И да, вы можете убрать элемент с экрана;)

...