首页 > 代码库 > 定制Toast
定制Toast
Toast是一种不影响用户操作的通知,出现一定时间自动消失。一般用户通知用户已经刷新内容。
原始类:
package com.xinbo.templete;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
//一个按钮事件,需要在xml里拉个按钮
public void TOAST(View v) {
Toast result = new Toast(this);
//.用以判断当连续多次toast,原先未及时toast的会被取消而马上toast下一个。////最后不要忘记result.show().
if(result!=null){
result.cancel();
}
LayoutInflater inflate = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//R.layout.custom_toast,是自定义的布局,这个布局的个性设置由我们决定,设置颜色、背景、文字字体等等
View v2 = inflate.inflate(R.layout.custom_toast, null);
TextView tv = (TextView) v2.findViewById(R.id.textView111);
tv.setText("toast....");
result.setGravity(Gravity.TOP, 20, 50);
// result.setGravity(gravity, xOffset, yOffset)
result.setView(v2);
result.setDuration(Toast.LENGTH_SHORT);
result.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);
return true;
}
}
//custom_toast的xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:padding="12dp"
android:layout_height="wrap_content"
android:background="@drawable/abs_bg" >
<TextView
android:id="@+id/textView111"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Medium Text"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
当然也可以经过封装,只要在需要的时候调用、传参数(上下文,显示的内容、显示时间)即可
封装类:
package com.xinbo.lib_yuchen;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public final class ToastUtils {
private static Toast result;
public static void showToast(Context context, String msg, int duration)
{
if (result != null)
{
result.cancel();
}
result = new Toast(context);
LayoutInflater inflate = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(R.layout.custom_toast, null);
TextView tv = (TextView) v.findViewById(R.id.textView1);
tv.setText(msg);
result.setView(v);
result.setGravity(Gravity.TOP, 20, 20);
result.setDuration(Toast.LENGTH_SHORT);
result.show();
}
private ToastUtils(){}
}
测试类:关键的一句: ToastUtils.showToast(this, "定制Toast", Toast.LENGTH_SHORT);
package com.xinbo.templete;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
import com.xinbo.lib_yuchen.ToastUtils;
public class MainActivity extends Activity {
public void btnToast(View v1) {
ToastUtils.showToast(this, "定制Toast", Toast.LENGTH_SHORT);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}