我有一个紫色圆形动作按钮的菜单。当我在横向打开应用程序时,按钮在顶部和右侧具有正确的边距。当我以纵向打开应用程序,然后将其旋转为横向时,按钮的像素太高了......
编辑:按钮似乎停留在正确的位置,但绿色背景向下移动......我添加了一些额外的背景XML,这样可能有助于解决问题。对我来说似乎是一个非常奇怪的错误...
任何人都可以帮助我吗?如果需要更多信息,请询问!
当我在横向打开应用程序时它是如何的(以及它应该如何!):
当我以纵向打开应用程序然后旋转到横向时,它是如何实现的:
人像模式(没问题):
我的风景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>
答案 0 :(得分:0)
这不应该发生。当屏幕方向改变时,Android会通过发送onDestroy()后跟onCreate()来重新启动Activity。新方向的启动顺序应与应用程序以该方向启动时完全相同。
您可能拥有在配置更改中保留状态的Java代码。如果是这样,我们正在尝试诊断您尚未向我们展示的代码中的问题。请告诉我们代码。
如果没有,那么我们中的一个人可能会对进一步调查感兴趣,但是你还没有提供足够的代码来做到这一点。您应该提供一个简短的自包含完整示例来演示问题,而不仅仅是提取。见http://sscce.org/
如果你没有或者不能做到,那么这个问题可能会被关闭。