如何在Android SDK 27中将屏幕方向限制为纵向

时间:2018-03-06 05:40:39

标签: android android-studio mobile screen-orientation

我试过了

android:screenOrientation="portrait"

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

但它正在崩溃应用程序,有没有其他方法可以在Android 8.0.0 +中使用?

logcat的:

FATAL EXCEPTION: main
  Process: in.ajtech.finX, PID: 15077
  java.lang.RuntimeException: Unable to start activity ComponentInfo{in.ajtech.finX/in.ajtech.finX.CalendarActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
      at android.app.ActivityThread.-wrap11(Unknown Source:0)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
      at android.os.Handler.dispatchMessage(Handler.java:105)
      at android.os.Looper.loop(Looper.java:164)
      at android.app.ActivityThread.main(ActivityThread.java:6541)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
   Caused by: java.lang.IllegalStateException: Only fullscreen activities can request orientation
      at android.os.Parcel.readException(Parcel.java:1950)
      at android.os.Parcel.readException(Parcel.java:1888)
      at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation(IActivityManager.java:5675)
      at android.app.Activity.setRequestedOrientation(Activity.java:5739)
      at in.ajtech.finX.CalendarActivity.onCreate(CalendarActivity.java:55)
      at android.app.Activity.performCreate(Activity.java:6975)
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
      at android.app.ActivityThread.-wrap11(Unknown Source:0) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loop(Looper.java:164) 
      at android.app.ActivityThread.main(ActivityThread.java:6541) 
      at java.lang.reflect.Method.invoke(Native Method) 

6 个答案:

答案 0 :(得分:4)

BUG

阅读Only fullscreen activities can request orientation

  

只有全屏活动可以请求定位   android.app.ActivityThread.performLaunchActivity

您应该使用AppCompatActivity代替 Activity

让您的活动延伸 AppCompatActivity

<强> JAVA

public class YourActivity extends AppCompatActivity {
  // ...
}

<强>科特林

class  YourActivity : AppCompatActivity()

<强> FYI

  

从Android 3.0(API级别11)开始,使用的所有活动   默认主题将ActionBar作为应用栏。不过,app吧   功能已逐渐添加到本机ActionBar中   各种Android版本。因此,本机ActionBar的行为   不同的取决于Android系统的哪个版本的设备   可能正在使用。相比之下,最新的功能被添加到   支持库的工具栏版本,它们可用于任何版本   可以使用支持库的设备。

来自Setting Up the App Bar

<强> DEMO

设定你的风格

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

</style>

答案 1 :(得分:1)

它的android sdk(27)问题,您无法将portraitTranslucent一起使用,因此请将目标sdk降低到26或删除{{1} }主题或删除Translucent模式。

答案 2 :(得分:1)

AndroidManifest.xml中进行以下更改:

  1. 对于不透明活动,即全屏,请设置:

    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.NoTitleBar"
    

    请注意,主题应该不是半透明的。

  2. 对于transclusent活动,即弹出对话框等,请设置:

    android:screenOrientation="unspecified"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    

    请注意,此处未指定screenOrientation。您可以使用半透明主题。

  3. 这可以在不降级SDK版本的情况下使用。

答案 3 :(得分:0)

nohup /root/ffmpeg_sources/ffmpeg/ffmpeg -stream_loop -1 -i "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov" -vcodec libx264 -f flv -s 320x240 -an "rtmp://localhost:1935/live/camera1" </dev/null & 重新定位到extents Activity解决了问题。谢谢你的帮助

答案 4 :(得分:0)

当我尝试打开活动作为另一个活动中的对话框时,我遇到了相同的错误。 然后我从清单中的对话框活动减速中删除了android:screenOrientation="portrait",并解决了问题! 这是因为父项活动应负责定向。

答案 5 :(得分:-1)

您可以在清单文件中设置属性,在每个活动中添加此行android:screenOrientation="portrait"