Длинный текст на кнопке портит строки GridLayout

У меня есть GridLayout, который используется для размещения нескольких кнопок, упорядоченных в два столбца. Все кнопки имеют фиксированную высоту и ширину. Если одна из кнопок содержит слишком много текста, макет испорчен. Я бы хотел, чтобы макет правильно поддерживал строки, независимо от того, слишком много текста на кнопках или нет (случай отображения слишком большого текста я обработаю позже, используя автоматический размер текста).

Это мой код:

<GridLayout
        android:id="@+id/cont_middle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="3dp"
        android:layout_marginTop="2dp"
        android:columnCount="2"
        >

        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="test"/>
        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="test"/>
        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="this is a really long text"/>
        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="test"/>
        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="test"/>
        <Button android:layout_width="120dp" android:layout_height="60dp" android:text="test"/>
</GridLayout>

Вот как это выглядит:

введите здесь описание изображения

вот как должен выглядеть макет (не говоря уже о тексте)

введите здесь описание изображения

Примечание. Я не хочу заставлять одну строку, я бы хотел, чтобы текст переносился, если он этого хочет, кнопка не меняет свою высоту, но я не хочу, чтобы она перемещалась.

Что мне не хватает?

Спасибо.


person So Many Goblins    schedule 27.05.2014    source источник
comment
пожалуйста, используйте тег marquee для просмотра кнопки.. может это вам поможет. :)   -  person V.P.    schedule 27.05.2014
comment
android:layout_width="0dp" помог мне заставить обтекание текстом работать в макете сетки со всеми кнопками - благодаря этому сообщению: stackoverflow.com/a/ 23090059/2162226   -  person Gene Bo    schedule 27.10.2017


Ответы (2)


Вы должны поместить кнопку внутри linearLayout и установить размеры вашей кнопки для линейного макета. Внутри линейного макета поместите свою кнопку как ширину, так и высоту в качестве родителя заполнения. Таким образом, ваш взгляд не будет испорчен.

person Illegal Argument    schedule 27.05.2014
comment
Это сработало как шарм, спасибо, вы знаете, почему это произошло? - person So Many Goblins; 27.05.2014
comment
лол, потому что я крут, ваша кнопка теперь привязана к границе своего родительского линейного макета, точно так же, как любой макет привязан к физическому размеру экрана, принимайте мой вопрос, тогда я буду рад помочь - person Illegal Argument; 27.05.2014
comment
Я понимаю это, но мне было интересно узнать, почему для правильного поведения требуется обертка. Но, я думаю, это просто ошибка Android. Большое спасибо, я ждал, когда SO позволит мне принять ваш ответ, вы ответили слишком быстро. Спасибо! - person So Many Goblins; 27.05.2014

вы, вероятно, можете сделать это, просто добавив максимальную высоту для кнопок

android:maxHeight="60dp"
person Budius    schedule 27.05.2014