这很奇怪,但是在 Java 代码中设置左边距或右边距在某些设备/平台上不起作用。
这是代码。简单的xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
<View
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:background="#00ff00" />
</FrameLayout>
爪哇:
@Override
public void onConfigurationChanged (Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)findViewById(R.id.myView).getLayoutParams();
params.leftMargin = 50;
params.rightMargin = 50;
params.topMargin = 50;
params.bottomMargin = 50;
findViewById(R.id.myView).requestLayout();
}
}
所以我在 FrameLayout 中有一个绿色视图。在旋转时,我改变了视图的边距。(我的活动有 android:configChanges="orientation|screenSize")
这是结果:
三星 Galaxy S 3 (Android 4.1.2) (工作正常)
索尼爱立信 Xperia Arc S (Android 4.0.4)(工作奇怪!)
正如您在代码上看到的那样,在 Android 4.1.2 上可以正常工作。并且在 Android 4.0.4 上没有设置左右边距,但设置了上边距。为什么要顶?
我在模拟器上测试过。所有平台 >= Android 4 都可以正常工作。在 Android 2.3 上根本没有设置边距,甚至是顶部边距。
有谁知道如何处理它?如何更改代码中的边距,使其适用于所有平台?