`
gryphone
  • 浏览: 426902 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

自定义 Dialog

阅读更多
自定义 Dialog

[功能]
android 提供给我们的只有2种Dialog 即 AlertDialog & ProgressDialog 但是 Dialog 有其自身的特点:1. 不是 Activity 2. 开销比 Activity 小得多
鉴于以上的优点 我们就有定制自己Dialog 的需求

[原理]
1. android 系统提供了一个class: Dialog. 而且你可以把自己的工作放在"protected void onCreate(Bundle savedInstanceState)" 在里面先调用系统的"super.onCreate(savedInstanceState)" 其就会保证调用这个method.
2. 至于 Dialog 界面的定制 可以写一个xml 文件 然后 在 "void onCreate(Bundle)" 通过 "setContentView()" 来使之生效
3. Dialog 使用问题: 1. 弹出:show() 2. 取消:dismiss()


[代码]
1. 创建一个 Dialog .
public class CustomDialog extends Dialog {

	public CustomDialog(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	 protected void onCreate(Bundle savedInstanceState){
		 super.onCreate(savedInstanceState);
		 
		 setContentView(R.layout.custom_dialog);
		 setTitle("Custom Dialog");

		 TextView text = (TextView)findViewById(R.id.text);
		 text.setText("Hello, this is a custom dialog!");
		 ImageView image = (ImageView)findViewById(R.id.image);
		 image.setImageResource(R.drawable.sepurple);
		 
		 Button buttonYes = (Button) findViewById(R.id.button_yes);
		 buttonYes.setHeight(5);
		 buttonYes.setOnClickListener(new Button.OnClickListener(){

				public void onClick(View v) {
					// TODO Auto-generated method stub
					dismiss();
					
				}
	        });
		 Button buttonNo = (Button) findViewById(R.id.button_no);
		 buttonNo.setSingleLine(true);
		 buttonNo.setOnClickListener(new Button.OnClickListener(){

				public void onClick(View v) {
					// TODO Auto-generated method stub
					dismiss();
					
				}
	        });
	 }
	 
	 //called when this dialog is dismissed
	 protected void onStop() {
		 Log.d("TAG","+++++++++++++++++++++++++++");
	 }
	 

}



2. Dialog 的使用:
public class CustomDialogUsage extends Activity {
	CustomDialog cd;
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        cd = new CustomDialog(this);
        
        
        Button buttonYes = (Button) findViewById(R.id.main_button);
        buttonYes.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				// TODO Auto-generated method stub
		        cd.show();
				
			}
        });

    }
    
}


3. Dialog 的界面定制.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/layout_root"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="10dp"
              >
    <ImageView android:id="@+id/image"
               android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:layout_marginRight="10dp"
               />
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:padding="5px" 
        >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:textColor="#FFF"
              />
    <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:padding="5px" 
        >
    <Button android:id="@+id/button_yes"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text=" Yes "
              android:gravity="center"
              />
    <Button android:id="@+id/button_no"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text=" No "
              android:gravity="center"
              />
    </LinearLayout>
    </LinearLayout>
</LinearLayout>



done!
分享到:
评论
1 楼 hezhou_0521 2010-11-30  
应该截图上的。

相关推荐

Global site tag (gtag.js) - Google Analytics