【问题标题】:android:@Theme.Translucent Locks orientation to Portrait?android:@Theme.Translucent 将方向锁定为纵向?
【发布时间】:2012-10-27 15:22:09
【问题描述】:

我创建了一种新样式来将背景设置为透明,但由于某种原因,当设备旋转时应用程序不会将布局更改为横向。 我应该指定新风格的东西吗?

这是代码:

< style name="Transparent" parent="android:@Theme.Translucent">
    < item name="android:windowBackground">@color/background</item>
</style>

【问题讨论】:

    标签: android styles


    【解决方案1】:

    虽然您没有为 activty 指定 android:screenOrientation,但 android 使用 "unspecified" 默认值,表示系统选择方向。

    如果您使用&lt;item name="android:windowIsTranslucent"&gt;true&lt;/item&gt; 的样式,系统会根据堆栈中底层活动的方向选择一个方向。所以很难让你的应用程序处于横向模式,因为大多数启动器都固定为纵向模式。

    只需为所有半透明活动设置android:screenOrientation="sensor" 以强制它独立选择方向:

    <activity
        android:name=".SomeActivity"
        android:screenOrientation="sensor"
        ...>
        ...
    </activity>
    

    【讨论】:

    • 我有android:screenOrientation="portrait" 用于后台活动。因此,当我将android:screenOrientation="sensor" 设置为前景半透明活动并旋转为横向时,我的背景活动也会旋转,尽管它具有android:screenOrientation="portrait"。即使前景处于横向模式,如何强制后台活动保持其纵向?
    【解决方案2】:

    我实际上有点解决它显然方向是根据背景应用程序在透明背景的情况下,因为我一直在测试启动器在后面时,我总是只得到纵向。

    【讨论】:

    • 好吧,只是在它后面使用不同的活动并不能真正解决问题。如果您在启动器顶部有一个活动,它是半透明的并且您想要旋转怎么办? screenOrientation=sensor 是一个糟糕的解决方案,因为它忽略了用户的屏幕锁定。
    【解决方案3】:

    正好在清单中

    <activity
                android:name=".Ippin_NewActivity"
                android:configChanges="keyboardHidden|orientation"
                android:label="@string/app_name" >
    </activity>
    

    【讨论】:

    • 没有变化...看起来 android:@Theme.Translucent 是方向锁定的原因
    • 我实际上有点解决了它显然方向是根据背景应用程序在透明背景的情况下,因为我一直在测试启动器在后面,我总是只有肖像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多