字符串对于 Toast 而言太长 - 如何显示字符串结尾而不是开头

String is too long for Toast - How to display end of string rather than beginning

好的,这可能是一个非常简单的问题。我有一个要在 toast 中显示的字符串值。例如...

String tempstring = "qwertyuiopasdfghjklzxcvbnm123456789012345678901234567890"; 
toast = Toast.makeText(getApplicationContext(), tempstring , Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();

我遇到的问题是我程序中的 tempstring 通常会变得非常大,而且文本量有时比 toast 可以显示的还大。发生这种情况时,toast 会显示开头的文本和结尾的剪辑。我希望 toast 始终显示字符串的末尾,但如果文本太多而无法在 toast 中一次显示,则切断开头。请问有什么简单的方法吗?

这就是您所需要的。它是在 gmail 应用程序中实现的。

https://code.google.com/p/romannurik-code/source/browse/misc/undobar/src/com/example/android/undobar/UndoBarController.java

这样你就可以自定义 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:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000"
android:orientation="horizontal"
android:padding="5dp"

>

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:textColor="#FFF"
    android:gravity="bottom"
    />
</LinearLayout>

然后像这样从你的 toast 中引用视图...

    LayoutInflater inflater = getLayoutInflater();

    View layout = inflater.inflate(R.layout.custom_toast,
            (ViewGroup) findViewById(R.id.custom_toast_layout_id));
    // set a message
    TextView text = (TextView) layout.findViewById(R.id.text);
    text.setText(themessage);

    toast = Toast.makeText(getApplicationContext(),
                    themessage, Toast.LENGTH_LONG);
    toast.setView(layout);
    toast.show();

任务完成...