关于对话框dialog的使用以及dialog的继承


关于对话框dialog的使用以及dialog的继承
 beerwine.xml

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" android:stretchColumns="0"
     android:background="@drawable/bg" android:layout_gravity="center_vertical|center_horizontal"
     android:layout_height="wrap_content" android:layout_width="wrap_content">


     <TableRow>
          <TextView android:textColor="#ffffff" android:text="beer:"
               android:textSize="16px" android:layout_marginLeft="6dip"
               android:layout_gravity="center_vertical" />

          <CheckBox android:id="@+id/checkboxBeer"
               android:layout_gravity="right|top" />

     </TableRow>

     <TableRow>
          <TextView android:textColor="#ffffff" android:text="wine:"
               android:textSize="16px" android:layout_marginLeft="6dip"
               android:layout_gravity="center_vertical" />

          <CheckBox android:id="@+id/checkboxWine"
               android:layout_gravity="right|top" />

     </TableRow>

     <TableRow android:layout_marginTop="230px">
          <Button android:id="@+id/buttonOK" android:text="ok"
               android:layout_height="wrap_content" android:layout_width="wrap_content" />

     </TableRow>
</TableLayout>
public class Second extends Activity {

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          Dialog dialog = new Dialog(this);
          dialog.setContentView(R.layout.beerwine);
          dialog.setTitle("beer or wine");
          dialog.show();
     }
}
上面的代码实现了那张图片的功能,其中图片中的酒杯是作为背景出现的并不存在一个vimageView

主要 dialog.setContentView(R.layout.beerwine); 的使用。

 

如果继续使用点击事件

public class Second extends Activity {

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          Dialog dialog = new Dialog(this);
          dialog.setContentView(R.layout.beerwine);
          dialog.setTitle("beer or wine");
          dialog.show();

          Button buttonOK = (Button) dialog.findViewById(R.id.buttonOK);
          buttonOK.setOnClickListener(new OKListener(dialog));
     }

     protected class OKListener implements OnClickListener {

          private Dialog dialog;

          public OKListener(Dialog dialog) {
               this.dialog = dialog;
          }

          public void onClick(View v) {
               dialog.dismiss();
          }
     }
}

这里面一定要注意Button buttonOK = (Button) dialog.findViewById(R.id.buttonOK);
是通过dialog引用出button其实你也可以用inflater的。

3.如果想继续扩展 添加选择框的选择事件

public class Third extends Activity {

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          BeerWineDialog dialog = new BeerWineDialog(this, true, true);
          dialog.show();
     }
}

 

public class BeerWineDialog extends Dialog {

     private boolean beer;
     private boolean wine;

     public BeerWineDialog(Context context, boolean beer, boolean wine) {
          super(context);
          this.beer = beer;
          this.wine = wine;
     }

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          setContentView(R.layout.beerwine);
          setTitle("beer or wine");

          CheckBox cbBeer = (CheckBox) findViewById(R.id.checkboxBeer);
          cbBeer.setChecked(beer);

          CheckBox cbWine = (CheckBox) findViewById(R.id.checkboxWine);
          cbWine.setChecked(wine);
          
          Button buttonOK = (Button) findViewById(R.id.buttonOK);
          buttonOK.setOnClickListener(new OKListener());
     }

     private class OKListener implements android.view.View.OnClickListener {

          @Override
          public void onClick(View v) {
               BeerWineDialog.this.dismiss();
          }
     }

}
这也呢最终继承了一个dialog控件