具体的创建Dialog的内容参见 : http://developer.android.com/guide/topics/ui/dialogs.html
自己在创建AlertDialog的时候如何改变对话框的样式;
对话框的效果图:
首先需要自己定义对话框的配置文件: 放在自己的应用程序的drawable-mdpi文件夹中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="400dip" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/popup_shadow_dailog"> <TextView android:id="@+id/title_addoreidt" android:gravity="center_vertical" android:background="@drawable/popup_top_dark" android:paddingLeft="20px" android:layout_width="fill_parent" android:layout_height="45px" android:layout_weight="1" android:text="@string/save_to_bookmarks" android:textStyle="bold" android:textSize="16px" android:textColor="@color/white" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:paddingTop="5dip" android:paddingBottom="13dip" android:paddingLeft="20dip" android:paddingRight="20dip" android:background="@drawable/popup_bg_m"> <TextView android:id="@+id/titleText" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/name" android:gravity="left" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/title" android:layout_height="wrap_content" android:layout_width="360dip" android:gravity="fill_horizontal" android:inputType="textCapSentences" android:selectAllOnFocus="true" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/addressText" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/location" android:gravity="left" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/address" android:layout_height="wrap_content" android:layout_width="360dip" android:hint="@string/http" android:gravity="fill_horizontal" android:inputType="textUri" android:selectAllOnFocus="true" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dip" android:minHeight="45dip" android:orientation="horizontal" > <Button android:id="@+id/OK" android:text="@string/save" android:layout_width="0dip" android:layout_gravity="left" android:layout_weight="1" android:maxLines="2" android:layout_height="wrap_content" android:background="@drawable/popup_botton_left" /> <Button android:id="@+id/cancel" android:text="@string/do_not_save" android:layout_width="0dip" android:layout_gravity="right" android:layout_weight="1" android:maxLines="2" android:layout_height="wrap_content" android:background="@drawable/popup_botton_right" /> </LinearLayout> </LinearLayout>定义button的配置文件:
left button:
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/popup_button_left_pressed" /> <item android:drawable="@drawable/popup_button_left" /> </selector>right button:
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/popup_button_right_pressed" /> <item android:drawable="@drawable/popup_button_right" /> </selector>放在应用的drawable文件夹中。
然后创建一个类 CustomDialog.java
import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.android.browser.R; public class CustomDialog extends Activity { private EditText mTitle; private EditText mAddress; private TextView mButton; private View mCancelButton; private boolean mEditingExisting; private Bundle mMap; private String mTouchIconUrl; private Bitmap mThumbnail; private String mOriginalUrl; private TextView mAdd; private Handler mHandler; private View.OnClickListener mSaveBookmark = new View.OnClickListener() { public void onClick(View v) { } }; private View.OnClickListener mCancel = new View.OnClickListener() { public void onClick(View v) { } }; protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.browser_add_bookmark); mAdd = (TextView) findViewById(R.id.title_addoreidt); mTitle = (EditText) findViewById(R.id.title); mAddress = (EditText) findViewById(R.id.address); View.OnClickListener accept = mSaveBookmark; mButton = (TextView) findViewById(R.id.OK); mButton.setOnClickListener(accept); mCancelButton = findViewById(R.id.cancel); mCancelButton.setOnClickListener(mCancel); if (!getWindow().getDecorView().isInTouchMode()) { mButton.requestFocus(); } } }是一个Activity,还需要定义activity的样式:
在res/values/style.xml中添加下面的代码:
<style name="CustomDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:textColor">@color/black</item> </style>在AndroidMainfest.xml文件中 activity中使用activity的样式:
<activity android:name="CustomDialog" android:label="Save bookmark" android:theme="@style/CustomDialog" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden"> <intent-filter> <action android:name="android.intent.action.INSERT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.dir/bookmark"/> </intent-filter> </activity>OK,Dialog定制完成。