Service类中如何在覆写的onStart方法中调用Toast,要求Toast能实现显示图片和文字
本帖最后由 shanebest 于 2013-08-19 23:45:42 编辑
在继承的Activity类中调用Toast,并且自定义Toast,要求其能实现显示图片和文字。配合XML文件(包含ImageView 和TextView),我能做到上面的要求。比如以下代码:
1、xml文件
<?xml version="1.0" encoding="utf-8"?>
<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:background="#DAAA"
android:orientation="horizontal"
android:padding="10dp" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF" />
</LinearLayout>
2、java代码:
// 获取LayoutInflater对象,该对象能把XML文件转换为与之一直的View对象
LayoutInflater inflater = getLayoutInflater();
// 根据指定的布局文件创建一个具有层级关系的View对象
// 第二个参数为View对象的根节点,即LinearLayout的ID
View layout = inflater.inflate(R.layout.toast_layout,
(ViewGroup) findViewById(R.id.toast_layout_root));
// 查找ImageView控件
// 注意是在layout中查找
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.head);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("这是一个自定义Toast,并且带图片显示");
Toast toast = new Toast(getApplicationContext());
// 设置Toast的位置
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
// 让Toast显示为我们自定义的样子
toast.setView(layout);
toast.show();
但是,如何实现以下要求呢?
在继承的Service类中如何在覆写的onStart(Intent intent, int startId)方法中调用Toast,并且自定义Toast,要求其能实现显示图片和文字。 Android Service Toast
[解决办法]
可以变通一下么?写一个空的 Activity,让它显示 Toast 并且立即自动关闭。
[解决办法]
2楼说的有道理,可以定义一个ToastActivity的类,将图片和文字作为该类的Toast方法的参数,需要显示的时候,start这个Activity,并调用Toast方法,然后等待一段时间关闭该Activity,或者将Activity移到后台。