Написать многострочный текст на кнопке в Android

Я хочу знать, как написать многострочный текст на кнопке

 <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="100dp"
    android:background="@drawable/layout_border"
    android:text="Hours   Mon - sat 5pm" />

Я получаю так: -

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

но требуется такая кнопка: -

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

Отредактировано::--

Теперь я получил что-то вроде этого, используя ответ @Sino K D:

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

но все еще ищу помощи,

После добавления drawable в левую сторону получаем следующее: -

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


person Sun    schedule 31.10.2013    source источник


Ответы (8)


Используйте 1_

(новая линия)

пример:-

android:text="Hi&#10;Hello"

OR

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>
person Sino    schedule 31.10.2013
comment
Является ли Hours статическим текстом? - person Sino; 31.10.2013
comment
тогда я думаю, что лучше создать изображение с текстом «Часы» и указать его в качестве левого значка кнопки. - person Sino; 31.10.2013
comment
Пример: - android:drawableLeft=@drawable/hour-text - person Sino; 31.10.2013
comment
часы также являются текстом, который нельзя рисовать - person Sun; 31.10.2013
comment
как я сказал, ваш ответ слишком полезен, я использовал изображение, но хотел бы знать, как добавить текст слева, в любом случае спасибо за простой и отличный ответ - person Sun; 31.10.2013
comment
я надеюсь, что вы найдете решение, хорошо, пожалуйста, смотрите выше, как выровнять центр рисования, слишком слева, нужно точно показать на изображении - person Sun; 31.10.2013
comment
Это может быть очевидно для всех остальных, но не для меня, поэтому: не забудьте установить layout_height на что-то отличное от wrap_content, что приводит к сворачиванию новой строки. Вы можете использовать fill_parent, как в этом примере, или определенную высоту, например 100dp. - person David John Welsh; 11.06.2015

Почему бы вам не попробовать это с помощью кодирования

String styledText = "<small> <font color='#000000'>"
            + "Mon-Sat 5:00 pm" + "</font> </small>"+ "<br/>"
            + "<small> <font color='#000000'>" + "Closed on Sunday"
            + "</font> </small>";

    sendrequest.setText((Html
            .fromHtml(styledText)));
person Akhilesh Sk    schedule 31.10.2013

вы можете достичь, используя это.

1-> создать кнопку в макете как

 <Button
        android:id="@+id/buton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Mon - Sat 5 pm\nClosed on sunday"
        />

2-> Добавьте этот класс в свой проект.

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;

public class TextDrawable extends Drawable {

    private final String text;
    private final Paint paint;

    public TextDrawable(String text) {

        this.text = text;

        this.paint = new Paint();
        paint.setColor(Color.WHITE);
        paint.setTextSize(20f);
        paint.setAntiAlias(true);
        paint.setFakeBoldText(true);
        paint.setShadowLayer(6f, 0, 0, Color.BLACK);
        paint.setStyle(Paint.Style.FILL);
        paint.setTextAlign(Paint.Align.LEFT);
    }

    @Override
    public void draw(Canvas canvas) {
        canvas.drawText(text, 0, 0, paint);
    }

    @Override
    public void setAlpha(int alpha) {
        paint.setAlpha(alpha);
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
        paint.setColorFilter(cf);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSLUCENT;
    }
}

3-> добавьте эти строки в свой класс активности

Button button=(Button)findViewById(R.id.button);
button.setCompoundDrawables( new TextDrawable("Hour"), null, null, null);
person Ali Ahmad    schedule 31.10.2013

Используйте &#10; (новая строка)

android:text="Hours&#10;Mon - sat 5pm"
person Linga    schedule 31.10.2013

Для макета Android к элементам можно добавить несколько строк текста.

Создайте новую переменную с символом endOfLine "\n" в файле res/values/strings.xml.

Например:

<string name="multiplelines">Line1 \n Line2</string>

Обратитесь к нему в файле макета. Например,

<Button
    android:id="@+id/start"
    android:text="@string/multiplelines"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">
</Button>
person Pihu    schedule 31.10.2013

вы можете использовать LinearLayout вместо кнопки и добиться аналогичного эффекта:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/layout_border"
android:orientation="horizontal" >
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="match_content"
    android:textColor="@color/grey" // you'll have to define this yourself
    android:text="Hours"
    android:gravity="center_vertical" />

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="Mon - Sat 5:00pm&#10;Closed on Sundays"
    android:gravity="center_vertical />
</LinearLayout>

Это может работать не идеально, но это начало

person panini    schedule 31.10.2013

Решение, которое можно использовать в strings.xml, разделитель \n в CDATA

<string name="switch_on_bluetooth"><![CDATA[Allumer\nBluetooth]]></string>
person Frédéric    schedule 19.11.2017

Добавлять

<Button
   android:layout_gravity="center_vertical" 
/>

в вашем файле XML и используйте \n для разрыва строки в файле java

btn3.setText("Selected Orders\nOnly");

https://i.stack.imgur.com/oXvNS.png

person gunny    schedule 01.11.2020