我正在开发一个应用程序,我必须使用多个祝酒词。
我使用以下方式显示这些祝酒词:
Toast.makeText(context, "Some medium-sized text", Toast.LENGTH_SHORT).show();
然而,显示器吐司的高度为一行,而文本则显示在多行上。结果是我无法查看吐司中的所有文本。
我该如何解决这个问题?
答案 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 example和Android'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>