как я могу отобразить несколько строк текста на кнопке - PullRequest
46 голосов
/ 12 ноября 2011

Для моей кнопки layout_width установлено значение match_parent.

Чтобы отобразить несколько строк на кнопке, я попытался:

  • вставить '\ n' в текст накнопка

  • установить значение Singleline false, установить Maxlines равным 2 или 3

  • преобразовать HTML из Html.fromHtml

Ничего не сработало.'\ n' отображалось в виде маленького квадрата на кнопке при отображении одной строки текста.

Кто-нибудь знает, почему это происходит и как я могу это исправить?

ОБНОВЛЕНИЕ: Я только что узнал, что использую пользовательскую кнопку, которая имеет собственный текстовый рисунок.Вот в чем причина.Извините за путаницу.Я просто наказал себя, ударившись головой.

Ответы [ 3 ]

78 голосов
/ 12 ноября 2011

Если вы пытаетесь добавить новую строку в XML-файл макета:

Использование 
 (новая строка)

    android:text="Hi
Hello"

Если вы пытаетесь добавить новую строку в коде, просто используйте '\ n', как и в любом другом тексте.

Если вы не видите вторую строку, возможно, у вашей кнопки недостаточно высоты. IE, в моем случае, компоновка, содержащая кнопку, имела фиксированную высоту, которая просто заставила мою кнопку отлично отображать одну строку текста.

27 голосов
/ 12 ноября 2011

Я только что попробовал, и это сработало:

1) Определить в ../res/values/strings.xml:

<string name="multilines">Line1Line1\nLine2Line2</string>

2) Обратитесь к нему в файле макета:

<Button
    android:id="@+id/btn_multilines"
    android:text="@string/multilines"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">
</Button>
0 голосов
/ 29 августа 2017

Если вы хотите сделать это программно, вы можете использовать System.getProperty("line.separator") в строке, чтобы изменить строки.Вот так:

String mybuttontext=line1+System.getProperty("line.separator")+line2;

и затем установите эту строку как текст кнопки.

...