Android Toast繰り返し表示の問題

3196 ワード

androidは、toastを作成するたびにシステムのキューに配置され、最後の表示が完全になるまで順次表示されることを知っています.これにより、ユーザーが繰り返しクリックし、toastが長い間表示され、ユーザーの体験が悪くなります.最新のtoastを表示するだけで、次のように実現されます.
static Toast result;
public static Toast makeText(int icon,Context context,CharSequence text){
    try {
        if(result != null){
        result.cancel();
        result = null;
    }
        result = new Toast(context);
        LayoutInflater inflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflate.inflate(R.layout.list_item_define_toast, null);
        TextView tv = (TextView)v.findViewById(R.id.id_tv);
        tv.setText(text);
        ImageView iv = (ImageView)v.findViewById(R.id.iv_iv_icon);
        iv.setImageResource(icon);
        result.setView(v);
        result.setDuration(0);
        result.setGravity(Gravity.TOP, 0, 0);
        return result;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return Toast.makeText(context, text, 0);
}

カスタムリスト_item_define_toast.xmlレイアウトファイルコード:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent" >
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:background="@drawable/soild_black_rs_5_storke"
        >
        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:orientation="horizontal"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            >
            
            
            <ImageView
                android:layout_marginTop="15dp"
                android:layout_marginBottom="15dp"
                android:id="@+id/iv_iv_icon"
            android:layout_marginRight="6dp"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_gravity="center_vertical"
            android:src="@drawable/refresh_success"
            />
            
            <TextView 
                android:layout_marginBottom="10dp"
                android:layout_marginTop="10dp"
                android:layout_gravity="center_vertical"
            android:id="@+id/id_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:textSize="@dimen/jh_size_text_normal"
            android:text="    Toast"
            />
        
        
        
        </LinearLayout>
        
        
 </RelativeLayout>
</RelativeLayout>