在android屏幕方向需要帮助

时间:2013-07-17 10:28:42

标签: android android-orientation

我的演示应用程序出现问题。
请检查我附加的屏幕,

Portrait View Landscape View

我只想在纵向视图中活动A (应该不改变横向模式),所以我在清单文件中声明ScreenOrientation="protrait"并且活动B (主题是对话框)应该在任何模式(纵向或横向)中更改,但当我移动我的时候横向模式下的手机活动B 不会改变其方向。


活动A

package com.example.activityorientation;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent it = new Intent(getApplicationContext(),DialogAct.class);
        startActivity(it);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


活动B

package com.example.activityorientation;

import android.app.Activity;
import android.os.Bundle;

public class DialogAct extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dailogact);
    }
}


清单文件,

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activityorientation"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.activityorientation.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>

        <activity
            android:name="com.example.activityorientation.DialogAct"
            android:label="@string/app_name" 
            android:theme="@android:style/Theme.Dialog"/>

    </application>

</manifest>


需要帮助, 感谢。

7 个答案:

答案 0 :(得分:0)

覆盖您活动中的onConfigurationChanges()方法。希望它可以帮助你。

将此信息放在您的清单android:configChanges="screenLayout|screenSize|orientation"

下方

答案 1 :(得分:0)

你试过----&gt;

    <activity
        android:name="com.example.activityorientation.DialogAct"
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.Dialog"
        android:screenOrientation="fullsensor"/>

答案 2 :(得分:0)

尝试在活动B 中使用android:screenOrientation="sensorPortrait|sensorLandscape"

答案 3 :(得分:0)

当在未指定方向(默认)的情况下在顶部启动“不完整”屏幕活动时,它将遵循暂停模式后面的全屏活动方向。 但是如果我们故意为非全屏活动指定方向值,它也会强制在暂停模式下的全屏活动方向随之改变。

活动B不是全屏活动。 因此,当我们启动活动B时,活动A仅进入暂停模式。 现在针对这种情况, 如果对于活动B屏幕方向未指定或未定义,它将与活动A的方向相同。 如果您故意将活动B的屏幕方向指定为横向,它会将活动A也更改为横向模式。

我建议让活动B完全活动。

答案 4 :(得分:0)

将此代码放入OnCreate()。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

OnCreate()方法示例(工作):

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        **setUIComponents();**
}
public void setUIComponents() {
        setContentView(R.layout.activity_ccap);
        **setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);**
        firstName = (EditText) findViewById(R.id.firstNameEditText);
        middleName = (EditText) findViewById(R.id.editText2);
        lastName = (EditText) findViewById(R.id.editText1);
        bussinessName = (EditText) findViewById(R.id.bussinessNameEditText);
        DOB = (EditText) findViewById(R.id.DOB);
        updateTextView = (TextView) findViewById(R.id.textView1);
        this.countyNumber = (Spinner) findViewById(R.id.countySpinner);
        this.numberPerPage = (Spinner) findViewById(R.id.itemsPerPageSpinner);
        popSpinner();
        submit = (Button) findViewById(R.id.button1);
        onSubmit();
    }

以上代码适用于我的活动;尝试使用您希望保留“纵向”的活动中的此代码。此外,如果您想要不同的方向,只需将ActivityInfo.SCREEN_ORIENTATION_PORTRAIT更改为其他内容,例如ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;

特别适合您,这应该有效:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

修改

这应该有效:

package com.example.activityorientation;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
**setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);**

        Intent it = new Intent(getApplicationContext(),DialogAct.class);
        startActivity(it);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

现在进入行动B:

package com.example.activityorientation;

import android.app.Activity;
import android.os.Bundle;

public class DialogAct extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dailogact);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    }
}

答案 5 :(得分:0)

我有同样的问题,它对我有所帮助: 添加AndroidManifest for Activity B

android:screenOrientation="fullSensor"

答案 6 :(得分:-1)

在活动B的AndroidManifest.xml中添加以下内容。

 android:configChanges="orientation" 

它将在两个方向都有效。

OR

检查您的手机设置或检查设备的动作是否已开启。