Android:自定义Toast中的ViewGroup

时间:2014-03-13 09:36:44

标签: android

我在我的应用中创建了一个自定义Toast,我已经在课堂上从任何地方调用它。它需要ViewGroup中的findViewById。但是当我在一个延伸Activity并且不属于某个事件的课程中时,我不知道发送它...谢谢

Module.java

public static void toast(Context context, View view, String texto, int perfilColor, int icono) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    View layouttoast = inflater.inflate(R.layout.toast, (ViewGroup)view.findViewById(R.id.toastcustom));
    ((TextView) layouttoast.findViewById(R.id.texttoast)).setText(Html.fromHtml(texto));

    ((ImageView) layouttoast.findViewById(R.id.imagenToast)).setImageResource(icono);
    ((LinearLayout) layouttoast.findViewById(R.id.toastcustom)).setBackgroundResource(cargarColorToast(perfilColor));

    Toast mytoast = new Toast(context);
    mytoast.setView(layouttoast);
    mytoast.setDuration(Toast.LENGTH_SHORT);
    mytoast.show();
}

MainActivity.java

...

if(...) {
    Module.toast(MainActivity.this, ¿? , "error", color, icon);
}

1 个答案:

答案 0 :(得分:0)

这就是我使用自定义吐司的方式。

public class CustomToast {

    public static Toast makeToast(Activity activity, String text, int duraion ){
        LayoutInflater inflater = activity.getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_achievement, (ViewGroup) activity.findViewById(R.id.toast_layout_root));

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

        Toast toast = new Toast(activity.getApplicationContext());
        toast.setDuration(duraion);
        toast.setView(layout);
        toast.setGravity(Gravity.CENTER, 0, 0);
        return toast;
    }
}

和xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_margin="10dp"
    android:padding="8dp" >

 <!-- content goes here-->

</LinearLayout>

不是id必须是toast_layout_root,否则它不会工作。

基本上,无论如何你都不需要传递视图。