以编程方式将Activity设置为Dialog Like

时间:2013-06-30 08:49:37

标签: android android-layout android-intent

我正在尝试为应用创建一个自定义设置活动,其中我希望手机能够进行正常的全屏活动,而平板电脑的自定义计算尺寸则位于后方活动之上。但是我遇到了一些问题。

public class ActivityAppSettings extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (getApplication() != null && ((ApplicationBase) getApplication()).mTheme > 0) {
            setTheme( ((ApplicationBase) getApplication()).mTheme );
        }

        super.onCreate(savedInstanceState);

        getWindow().setBackgroundDrawable(new ColorDrawable(0));
        getWindow().setLayout(800, 600);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_app_settings);
    }
}

这是我的活动(这仅用于测试,因此没有平板电脑检查或任何其他内容)。它也有点工作。我没有标题,内容的大小只填写我设置的宽度和高度,并在屏幕上居中。但是,内容背景不透明。

我有一些全局自定义主题,因此将它们更改为Dialog并不好,因为它会覆盖窗口内容的主题。但是,为了尝试找到问题,我确实尝试将对话框主题更改为Android的对话框主题。这也不起作用。内容周围仍然是黑色背景。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.menu_controller_app_settings:
            Intent intent = new Intent(this, ActivityAppSettings.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

            startActivity(intent);

            return true;

        default:
        return super.onOptionsItemSelected(item);
    }
}

这是活动从主要活动中开始的地方。也许这是我遗失的地方?

1 个答案:

答案 0 :(得分:1)

请尝试以下代码。

 public class AlertDialogActivity extends Activity {
 private Context mContext;
 private String message;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    mContext = this;
    super.onCreate(savedInstanceState);

        final Dialog myDialog = new Dialog(mContext);
        myDialog.setContentView(R.layout.dialog_layout);
        myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
        TextView titleTextView = (TextView) myDialog
                .findViewById(R.id.DialogTitleTextView);
        TextView messageTextView = (TextView) myDialog
                .findViewById(R.id.DialogMessageTextView);
        Button okButton = (Button) myDialog
                .findViewById(R.id.DialogOkButton);
        Button cancelButton = (Button) myDialog
                .findViewById(R.id.DialogCancelButton);
        titleTextView.setText(mContext.getString(R.string.app_name));
        titleTextView.setTypeface(Calculations
                .getBoldTypeFaceInstance(mContext));
        messageTextView.setText(message);
        messageTextView.setTypeface(Calculations
                .getRegularTypeFaceInstance(mContext));
        okButton.setTypeface(Calculations.getBoldTypeFaceInstance(mContext));


        myDialog.show();

  } 
}