最近遇见一个奇葩的问题,就是部分手机例如红米手机会出现Toast默认在文字前面加上应用名称最后通过自定义Toast解决了这个问题。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#cc000000" />
<corners android:radius="38dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:background="@drawable/bg_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="80dp">
<TextView
android:id="@+id/tv_ls_toast"
android:textSize="14sp"
android:gravity="center"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="36dp"
android:layout_centerInParent="true"
android:textColor="#FFFFFF" />
</RelativeLayout>
</LinearLayout>
package com.neusoft.ls.base.ui;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
public class LSToast extends Toast {
private Context mContext;
private Toast toast;
public static LSToast lsToast;
private View toastView;
public LSToast(Context context) {
super(context);
this.mContext = context;
toastView = LayoutInflater.from(context).inflate(R.layout.layout_lstoast, null);
if (null == toast) {
toast = new Toast(context);
}
}
public static LSToast getInstance(Context context) {
// if (null == lsToast) {
lsToast = new LSToast(context);
// }
return lsToast;
}
/**
*
* @param str
* @param duration
*/
public void show(String str,int duration){
toast.setDuration(duration);
TextView textView = toastView.findViewById(R.id.tv_ls_toast);
textView.setText(str);
toast.setView(toastView);
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
toast.show();
}
}, 0, 10*1000);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
toast.cancel();
timer.cancel();
}
}, 10*1000 );
}
}