自己所想要的快顯訊息(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的蠻多地方如果想要自定樣該控制項都是這樣用的
都是必須新增一個模板,再對該模板做您想做的事,這樣的做法其實還蠻方便的
而且彈性也很大,以上就是為你做的自定樣快顯介紹,說明都寫在程式碼內了
如有不明白請留言,感謝。
沒有留言:
張貼留言
您的寶貴建議是我前進的動力!