方向更改后尺寸不正确

时间:2014-07-12 09:34:45

标签: android orientation

我有一个紫色圆形动作按钮的菜单。当我在横向打开应用程序时,按钮在顶部和右侧具有正确的边距。当我以纵向打开应用程序,然后将其旋转为横向时,按钮的像素太高了......

编辑:按钮似乎停留在正确的位置,但绿色背景向下移动......我添加了一些额外的背景XML,这样可能有助于解决问题。

对我来说似乎是一个非常奇怪的错误...

任何人都可以帮助我吗?如果需要更多信息,请询问!

当我在横向打开应用程序时它是如何的(以及它应该如何!): How it should be

当我以纵向打开应用程序然后旋转到横向时,它是如何实现的: This is wrong!

人像模式(没问题): Portrait

我的风景layout.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_panel"
    tools:context=".MenuActivity" >

    <ImageButton
        android:id="@+id/actionButton"
        android:layout_width="@dimen/actionButtonSize"
        android:layout_height="@dimen/actionButtonSize"
        android:layout_gravity="right|top"
        android:layout_marginRight="@dimen/actionButtonMarginRight"
        android:layout_marginTop="@dimen/actionButtonMarginTop"
        android:background="@drawable/action_button"
        android:contentDescription="@string/none"
        android:src="@drawable/ic_action_content_new" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </android.support.v4.view.ViewPager>

</FrameLayout>

我在正常值文件夹中的dimens.xml:

<resources>

    <dimen name="actionButtonMarginRight">64dp</dimen>
    <dimen name="actionButtonMarginTop">100dp</dimen>

    <dimen name="panelHeight">128dp</dimen> <!-- the height of the green part -->

</resources>

背景:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@android:color/holo_green_light"></item>
    <item android:drawable="@color/background" android:top="@dimen/panelHeight" ></item>
</layer-list>

1 个答案:

答案 0 :(得分:0)

这不应该发生。当屏幕方向改变时,Android会通过发送onDestroy()后跟onCreate()来重新启动Activity。新方向的启动顺序应与应用程序以该方向启动时完全相同。

您可能拥有在配置更改中保留状态的Java代码。如果是这样,我们正在尝试诊断您尚未向我们展示的代码中的问题。请告诉我们代码。

如果没有,那么我们中的一个人可能会对进一步调查感兴趣,但是你还没有提供足够的代码来做到这一点。您应该提供一个简短的自包含完整示例来演示问题,而不仅仅是提取。见http://sscce.org/

如果你没有或者不能做到,那么这个问题可能会被关闭。