android AllertDialog没有保证金 - 这会导致什么?也许风格问题?

时间:2016-03-17 17:11:03

标签: android alertdialog android-alertdialog appcompatactivity

我想在AlertDialog的onCreate函数中显示AppCompatActivity,由于某种原因,它没有边距。见图:

dialog without margin

这是我的代码:

@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会导致问题吗?如果您这么认为我附上了styles.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中有其他地方可以影响这种行为吗?我不知道整个代码,因为它是一个公司的应用程序,所以也许其他一些覆盖方法或其他东西?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

//全局声明对话

  

AlertDialog dialog = null;

//在Actvity中调用显示对话框的功能

  

dialogShow();

//在onCreate()

之外定义函数

void dialogShow(){

    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();


}

答案 2 :(得分:0)

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

android:theme="@style/SplashScreen"

我不知道是什么造成的,所以如果有人能向我解释,我会非常感激!