1

我想在我的AppCompatActivity的 onCreate 函数中显示一个AlertDialog ,并且由于某种原因它周围没有边距。看图片:

无边距对话框

这是我的代码:

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

 //These are just some setters in the company code
 MyApplication.setActivity(this); 
 setTheme(R.style.AppTheme);
 setContentView(R.layout.activity_splash_screen);
 Intent intent = getIntent();
 String action = intent.getAction();
 if(action != null && action.compareTo(Intent.ACTION_VIEW) == 0){
     mHasContent = true;
     mContentUri = intent.getData();
 }else{
     mHasContent = false;
 }
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 initViews();

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setTitle("title");
 builder.setMessage("message");
 builder.create().show();
}

我不知道是什么导致了问题,该对话框在我的代码中的其他位置正确显示。
(我试图将它放入 onResume 并且它不起作用。我只想在活动创建时显示它,这就是我尝试使用 onCreate 的原因。)

我的自定义 AppTheme 会导致问题吗?如果你这么认为,我附上我的 style.xml 的相关部分:

...
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
...
<style name="AppTheme" parent="AppBaseTheme">

    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>

    <item name="toolbarStyle">@style/Toolbar</item>

    <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
    ...
</style>
...

我试图创建一个新项目并将所有上层代码(styles.xml 和所有其他代码)放入其中,但我无法重现该错误。还有什么可能导致问题?

问题可能出在哪里?任何人都可以帮忙吗?

我也有一个具有覆盖 onCreate() 函数的应用程序类,并尝试删除这些函数调用,但没有任何改变。android中还有其他地方会影响这种行为吗?我不知道整个代码,因为它是一个公司应用程序,所以也许是其他一些被覆盖的方法或什么?

4

3 回答 3

1

删除此行getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

于 2016-03-17T17:32:23.660 回答
0

//全局声明对话框

警报对话框对话框 = null;

//在Activity中调用函数显示Dialog

对话框显示();

//在onCreate()之外定义函数

无效对话框显示(){

    AlertDialog dialog = null;

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.education_dialoge_add_language, null);

    dialogBuilder.setView(dialogView);
    dialog = dialogBuilder.create();
    dialog.show();

    dialog.show();


}
于 2016-03-22T09:34:46.500 回答
0

我已经从清单文件中的活动中删除了这一行,它解决了我的问题:

android:theme="@style/SplashScreen"

我不知道是什么原因造成的,所以如果有人能向我解释一下,我将不胜感激!

于 2016-03-23T10:53:03.887 回答