Android:如何创建透明的对话框主题活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:如何创建透明的对话框主题活动相关的知识,希望对你有一定的参考价值。

我最初的目标是模态对话框,但是你知道,android不支持这种类型的对话框。或者,构建以对话为主题的活动可能会奏效。 这是代码,

public class DialogActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    setTheme(android.R.style.Theme_Dialog);

    super.onCreate(savedInstanceState);

    requestWindowFeature (Window.FEATURE_NO_TITLE);

    Button yesBtn = new Button(this);
    yesBtn.setText("Yes");
    yesBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            DialogActivity.this.finish();

        }

    });

    this.setContentView(yesBtn);
}

然而,背景总是黑色,这真的令人困惑。人们有同样的问题, http://code.google.com/p/android/issues/detail?id=4394 我只想让它看起来更像对话用户。那么,如何让这个DialogActivity透明,永远不会覆盖底层屏幕? 谢谢。

这就是我创作风格的方式

<style name="CustomDialogTheme" parent="android:Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">false</item>
</style>
答案

您可以通过此创建透明对话框。

public class DialogActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle(" ");
        alertDialog.setMessage("");
        alertDialog.setIcon(R.drawable.icon);
        alertDialog.setButton("Accept", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {                
            }
        });
        alertDialog.setButton2("Deny", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        alertDialog.show();
    }
}

在此之后只需在AndroidManifest.xml中添加一行,您可以在其中定义清单中的活动。

android:theme="@android:style/Theme.Translucent.NoTitleBar"
另一答案

我找到的最简单的方法是将AndroidManifest中的activity主题设置为android:theme="@android:style/Theme.Holo.Dialog"然后在activity的onCreate方法中调用getWindow().setBackgroundDrawable(new ColorDrawable(0));

另一答案

在这里添加所有答案只需要一件事。要实现像行为一样的完整对话框,可以通过更改窗口布局参数来重新定位对话框:

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.x = ...;
params.y = ...;
params.width = ...;
params.height = ...;

this.getWindow().setAttributes(params);

我们使用类似的技术在Tooleap SDK中实现浮动活动效果:

另一答案
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));

import android.graphics.drawable.ColorDrawable; on top :)

另一答案

只需快速更新@ user824330即可。既然你有AlertDialog.Builder类,为什么不正确使用它呢?现在已弃用许多方法。最新的代码与此类似:

public class DialogActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("title")
       .setMessage("message")
       .setIcon(R.drawable.ic_launcher)
       .setPositiveButton("Yes", new OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {}
       })
       .setNegativeButton("No", new OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {}
       });

    final AlertDialog dialog = builder.create();
    dialog.show();
}

}

另一答案

您可能最好建立一个DialogFragment并使用setcontentview自定义对话框。

http://developer.android.com/reference/android/app/DialogFragment.html

以上是关于Android:如何创建透明的对话框主题活动的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅------&gt;怎样将Activity变为半透明的对话框?

自定义对话框,白色透明背景[复制]

Android半透明主题不起作用

Android:如何从活动活动中关闭前台活动?

Android:如何在活动上方显示透明加载层

带有圆角和透明背景的 Android 自定义警报对话框