如何只在android中以纵向模式显示自定义对话框?

时间:2014-12-15 06:59:05

标签: android android-layout android-orientation

您好我不想设置活动方向我想仅限制对话框。 让我知道是否可能。

**

  

仅适用于对话不活动

。**

    Dialog d = new Dialog(context);
    Window window = d.getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
            WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
    d.requestWindowFeature(Window.FEATURE_NO_TITLE);

    //d.setCancelable(false);
    d.setContentView(R.layout.viewpager_main_for_printing);
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(d.getWindow().getAttributes());
    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    lp.gravity = Gravity.CENTER;
    lp.screenOrientation=WindowManager.LayoutParams./// Here how to set orentation
    d.getWindow().setAttributes(lp);

3 个答案:

答案 0 :(得分:1)

您应该检查要显示对话框的地方的方向。

如果方向是纵向,则显示对话框。

答案 1 :(得分:0)

第1步:使用屏幕方向使您的活动成像通过清单

<activity
        android:name="com.example.test.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

第2步:需要创建对话框,如下所示

Dialog dialogBoxAbout = new Dialog(this);
dialogBoxAbout.setContentView(R.layout.activity_about);
dialogBoxAbout.show();

这是用于通过XML进行对话。

另一个选项
创建一个新活动并使其成为一个对话框。 如下所述在清单文件中声明它。

<activity
        android:name="com.test.dialog"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Dialog" />

答案 2 :(得分:0)

锁定方向 if (activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }

解锁:

        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);