在Android上的按钮上写多行文字

时间:2013-10-31 06:28:44

标签: android xml android-widget android-button

我想知道,如何在按钮上编写多行文字

 <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" />

我是这样的: -

enter image description here

但需要这种按钮: -

enter image description here

编辑:: -

现在,通过使用@Sino K D:

给出的答案,我得到了类似的东西

enter image description here

但仍在寻求帮助,

将drawable添加到左侧后,得到: -

enter image description here

8 个答案:

答案 0 :(得分:22)

使用&#10;

(新行)

例如: -

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>

答案 1 :(得分:2)

为什么不通过编码来尝试这个

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)));

答案 2 :(得分:1)

你可以实现这一目标。

1-&gt;在布局中创建一个按钮

 <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);

答案 3 :(得分:0)

使用&#10;(换行)

android:text="Hours&#10;Mon - sat 5pm"

答案 4 :(得分:0)

对于Android版面,可以在元素中添加多行文字。

在res / values / strings.xml中创建一个字符为endOfLine“\ n”的新变量。

例如:

<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>

答案 5 :(得分:0)

你可以使用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>

这可能不太完美,但这是一个开始

答案 6 :(得分:0)

可以在 strings.xml 中使用的解决方案,CDATA中的分隔符是 \ n

<string name="switch_on_bluetooth"><![CDATA[Allumer\nBluetooth]]></string>

答案 7 :(得分:0)

添加

<Button
   android:layout_gravity="center_vertical" 
/>

在您的XML文件中,并使用“ \ n ”在Java文件中换行

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

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