2012-07-18

Android快顯訊息(Toast)應用(二) - 自定義快顯

上一章,快顯訊息(Toast)是用默認的型式呈現,這一章中我們來使用自定義方式呈現我們

自己所想要的快顯訊息(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的蠻多地方如果想要自定樣該控制項都是這樣用的

都是必須新增一個模板,再對該模板做您想做的事,這樣的做法其實還蠻方便的

而且彈性也很大,以上就是為你做的自定樣快顯介紹,說明都寫在程式碼內了

如有不明白請留言,感謝。

沒有留言:

張貼留言

您的寶貴建議是我前進的動力!