yinge00 2012-06-17
如果你想自定义一个对话框,你可以使用布局元素来创造你的对话框的布局。定义好布局后,将根View对象或者布局资源ID传给setContentView(View).
例如,创建如图所示的对话框:
创建一个xml布局custom_dialog.xml:
viewplain
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"
>
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
该xml定义了一个LinearLayout中的一个ImageView和一个TextView。
将以上布局设为对话框的contentview,并且定义ImageView和TextView的内容:
viewplain
ContextmContext=getApplicationContext();
Dialogdialog=newDialog(mContext);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("CustomDialog");
TextViewtext=(TextView)dialog.findViewById(R.id.text);
text.setText("Hello,thisisacustomdialog!");
ImageViewimage=(ImageView)dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
在初始化Dialog之后,使用setContentView(int),将布局资源id传给它。现在Dialog有一个定义好的布局,你可以使用findViewById(int)来找到该元素的id并修改它的内容。
使用前面所讲的方法显示对话框。
一个使用Dialog类建立的对话框必须有一个标题。如果你不调用setTitle(),那么标题区域会保留空白。如果你不希望有一个标题,那么你应该使用AlertDialog类来创建自定义对话框。然而,由于一个AlertDialog使用AlertDialog.Builder类来建立最方便,所以你没有方法使用setContentView(int),而是只能使用setView(View)。该方法接受一个View对象,所以你需要从xml中展开你的根View。
要展开一个xml布局,使用getLayoutInflater()(或getSystemService())取得LayoutInflater,然后调用inflate(int,ViewGroup),第一个参数为布局id,而第二个参数为根view的id。现在,你可以使用展开后的布局来找到View对象并定义ImageView和TextView元素的内容。然后实例化AlertDialog.Builder并使用setView(View)来为对话框设置展开后的布局。例如:
viewplain
AlertDialog.Builderbuilder;
AlertDialogalertDialog;
ContextmContext=getApplicationContext();
LayoutInflaterinflater=(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
Viewlayout=inflater.inflate(R.layout.custom_dialog,
(ViewGroup)findViewById(R.id.layout_root));
TextViewtext=(TextView)layout.findViewById(R.id.text);
text.setText("Hello,thisisacustomdialog!");
ImageViewimage=(ImageView)layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
builder=newAlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog=builder.create();
使用AlertDialog来自定义对话框,可以利用其内置特性例如按钮、选择列表、标题、图标等。
相对布局只要是要有参照物,即谁在谁下方,谁在谁左边,和谁左对齐,等等。然后再添加一个按钮使其在textView的下方以及在立即更新按钮的左边。android:text="发现新的版本,您想现在更新吗?