如何在android中自定义完整的Toast大小

时间:2013-09-14 18:18:35

标签: android toast

我正在展示一个定制的吐司,带有一些生物的背景图片,但我希望吐司是我定义的尺寸。

在正常的吐司中使用它是不可能的:

View view = toast.getView();
view.setBackgroundResource(R.drawable.go);
toast.setView(view);`

然后我使用了这样的布局inflater:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.hit_toast,
                                    (ViewGroup) findViewById(R.id.custom_toast_layout));
     layout.setBackgroundResource(R.drawable.go);
     TextView text = (TextView) layout.findViewById(R.id.textToShow);
     // Set the Text to show in TextView
     text.setText(msg);

     Toast toast = new Toast(getApplicationContext());
     //toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
     toast.setDuration(Toast.LENGTH_SHORT);
     toast.setView(layout);
     toast.show();

和我的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_toast_layout"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:background="#DAAA"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="8dp" >

    <TextView
        android:id="@+id/textToShow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="ll"
        android:textColor="#00ffff" />
</LinearLayout>`

但是吐司的大小仍然相同,只是位置改变了。

2 个答案:

答案 0 :(得分:2)

如果你想自定义吐司,那么SuperToast library就是答案。

它在定制方面具有灵活性和无限性!

答案 1 :(得分:1)

我尝试改变宽度和高度的尺寸。但似乎你永远不能展示宽度和高度指定的烤面包......烤面包根据内容改变它们的形状,说背景图片或文字内部.... 这适用于android中提供的默认吐司。

您可以随时创建名为toast_layout的小布局,并将其可见性设置为INVISIBLE,而不是这样做。在要显示它的同一布局文件中创建它。把它放在你想要吐司的任何地方。

<RelativeLayout
        android:id="@+id/toast_layout"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:background="@drawable/toastbackground"
        android:visibility="invisible" >

        <ImageView
            android:id="@+id/toast_img"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:src="@drawable/man" />

        <TextView
            android:id="@+id/toast_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/down_img"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#00ffff"
            android:textStyle="bold|italic" />

    </RelativeLayout>

在res / anim文件夹中创建一个名为fade_in_out的tweenAnimation文件,与普通的toast不同,您可以根据需要自定义fadein和fadout属性。

如果要显示吐司内部活动,请调用以下函数,如: -

clone_toast(R.drawable.image,"Yao it Works...");

void clone_toast(int ids, String msg) {
        toast_img.setImageResource(ids);
        toast_text.setText(msg);
        toast_layot.setVisibility(View.VISIBLE);
        toast_layout.startAnimation(fade_in_out);
    }