Android Activity 对话框(Dialog)样式

有些时候需要把一个activity当成一个dialog来使用,或者说需要一个dialog里面放一些布局或者其它控件,这时候就需要一个Dialog样式的Activity了。
Activity一般给人的印象是要占满全屏的。伪装成Dialog的效果是只显示在部分屏幕中。

需要在Manifest里面配置activity的样式

android:theme="@android:style/Theme.Dialog"

这样activity就成了dialog的样式了,但为了更像dialog,可以在左上角加一个小图标,标题。

添加标题一共有两种方式,一种是在Manifest里面配置:

android:label="@string/activity_dialog"

另一种是在java代码里面控制:

setTitle(R.string.activity_dialog);

如果一个activity的标题不需要改变,推荐使用xml配置的方式。

为窗口加上小图标:

requestWindowFeature(Window.FEATURE_LEFT_ICON); 
// 请求使用Window.FEATURE_LEFT_ICON小图标 
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert); 
// 添加小图标到activity对话框中。必需要先requestWindowFeature,不然会报错。

完整代码如下:

public class DialogActivity extends Activity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.main); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert); 
  } 
}