Android Toast繰り返し表示の問題
3196 ワード
androidは、toastを作成するたびにシステムのキューに配置され、最後の表示が完全になるまで順次表示されることを知っています.これにより、ユーザーが繰り返しクリックし、toastが長い間表示され、ユーザーの体験が悪くなります.最新のtoastを表示するだけで、次のように実現されます.
カスタムリスト_item_define_toast.xmlレイアウトファイルコード:
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>