android吐司不适合文字

时间:2011-07-31 09:42:07

标签: android toast

我正在开发一个应用程序,我必须使用多个祝酒词。

我使用以下方式显示这些祝酒词:

Toast.makeText(context, "Some medium-sized text", Toast.LENGTH_SHORT).show();

然而,显示器吐司的高度为一行,而文本则显示在多行上。结果是我无法查看吐司中的所有文本。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:28)

尝试在要拆分文本的位置插入回车符和换行符。

这些字符可以参考旧的打字机型号。回车是气缸回到起点,换行是气缸滚动(进给)一条线。

在计算中,这些字符由两个转义字符表示(特殊代码允许字符串中的不可打印代码,前缀为反斜杠\)。

  • 回车符由\r
  • 表示
  • 换行由\n表示(您可以将其记住为新行)。

某些非unix系统(例如Windows)需要两者,其他(例如Android所基于的Linux)只需要新行,但在任何地方都可以安全地执行。一件必不可少的事情就是他们所处的顺序。它必须是\r\n

将此放入您的示例中:

Toast.makeText(context, "First line of text\r\nSecond line of text", Toast.LENGTH_SHORT).show();

在Android中,您应该能够将此缩减为新行字符\n,因为基于unix的系统不是那么挑剔:

Toast.makeText(context, "First line of text\nSecond line of text", Toast.LENGTH_SHORT).show();

答案 1 :(得分:0)

使用此Custom toast in android : a simple exampleAndroid's Toast default colors and alpha的主要想法,我开发了一个简单的自定义Toast,它看起来像默认的Toast,但它将文本包装在多行中。

我使用makeText(context,text,duration)静态方法创建了一个简单的类,因此我只需要在项目的每个地方用Toast.makeText替换CustomToast.makeText

代码

CustomToast.java

public class CustomToast extends Toast{
    /**
     * Construct an empty Toast object.  You must call {@link #setView} before you
     * can call {@link #show}.
     *
     * @param context The context to use.  Usually your {@link Application}
     *                or {@link Activity} object.
     */
    public CustomToast(Context context) {
        super(context);
    }

    public static Toast makeText(Context context, CharSequence text, int duration) {
        Toast t = Toast.makeText(context,text,duration);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
        View layout = inflater.inflate(R.layout.custom_toast,null);

        TextView textView = (TextView) layout.findViewById(R.id.text);
        textView.setText(text);

        t.setView(layout);


        return t;
    }

}

布局layout/custom_toast.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/custom_toast_layout_id"
              android:background="@android:drawable/toast_frame"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="horizontal"
              android:gravity="center_horizontal|center_vertical"
              android:padding="5dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal|center_vertical"
        android:layout_height="wrap_content"
        android:singleLine="false"
        android:layout_weight="1"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:textColor="@android:color/background_light"
        android:shadowColor="#BB000000"
        android:shadowRadius="2.75"/>

</LinearLayout>