自己所想要的快顯訊息(Toast)
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="默認樣式" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定義樣式" />
</LinearLayout>
注意:因為是自定義的,所以必須新增一個自定義樣式的模板
custom.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="#ffffffff" android:orientation="vertical" android:id="@+id/llToast" > <TextView android:layout_height="wrap_content" android:layout_margin="1dip" android:textColor="#ffffffff" android:layout_width="fill_parent" android:gravity="center" android:background="#bb000000" android:id="@+id/tvTitleToast" /> <LinearLayout android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/llToastContent" android:layout_marginLeft="1dip" android:layout_marginRight="1dip" android:layout_marginBottom="1dip" android:layout_width="wrap_content" android:padding="15dip" android:background="#44000000" > <ImageView android:layout_height="wrap_content" android:layout_gravity="center" android:layout_width="wrap_content" android:id="@+id/tvImageToast" /> <TextView android:layout_height="wrap_content" android:paddingRight="10dip" android:paddingLeft="10dip" android:layout_width="wrap_content" android:gravity="center" android:textColor="#ff000000" android:id="@+id/tvTextToast" /> </LinearLayout> </LinearLayout>
DemoToastActivity.java
package jim.demo.toast;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class DemoToastActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button type = (Button)findViewById(R.id.button1);
Button type2 = (Button)findViewById(R.id.button2);
//建立"默認樣式"的監聽式
View.OnClickListener listener1 = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//要顯示的訊息
Toast.makeText(getApplicationContext(), "默認樣式",
Toast.LENGTH_SHORT).show();
}
};
//加入默認樣式按鈕內
type.setOnClickListener(listener1);
//建立"完全自定義"的監聽式
View.OnClickListener listener2 = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//要顯示的訊息
//自定義樣式必須有一個自定義的樣板
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom,
(ViewGroup) findViewById(R.id.llToast));
//自定義樣板中的圖片
ImageView image = (ImageView) layout
.findViewById(R.id.tvImageToast);
//載入圖片,我用內建icon(android.R.drawable.sym_def_app_icon)
image.setImageResource(android.R.drawable.sym_def_app_icon);
//標題文字
TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
title.setText("我是標題");
//內容文字
TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
text.setText("自定義樣式");
//快顯設定
Toast toast = null;
toast = new Toast(getApplicationContext());
//快顯位置
toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
//顯示時間(長時間為Toast.LENGTH_LONG,短時間為Toast.LENGTH_SHORT)
toast.setDuration(Toast.LENGTH_LONG);
//載入自定樣式
toast.setView(layout);
//顯示快顯訊息
toast.show();
}
};
//加入"自定義樣式"按鈕內
type2.setOnClickListener(listener2);
}
}
執行後畫面
後記:
自定義樣式最大的不同在於必須多加一個模板custom.xml,做為我們想自定快顯訊息內
樣式之用,這個做法在Android的蠻多地方如果想要自定樣該控制項都是這樣用的
都是必須新增一個模板,再對該模板做您想做的事,這樣的做法其實還蠻方便的
而且彈性也很大,以上就是為你做的自定樣快顯介紹,說明都寫在程式碼內了
如有不明白請留言,感謝。


沒有留言:
張貼留言
您的寶貴建議是我前進的動力!