这很奇怪,但在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>
Java:
@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中有一个绿色视图。旋转时更改View的margin。(我的activity具有android:configChanges =“orientation | screenSize”)
以下是结果:
三星 Galaxy S3(Android 4.1.2)(正常工作)
Sony Ericsson Xperia Arc S(Android 4.0.4)(表现奇怪!)
如您所见,代码在Android 4.1.2上运行正常。 在Android 4.0.4上,左右边距未设置,但是顶部边距已设置。 为什么是顶部?
我已在模拟器上进行了测试。 所有Android 4及以上平台均可正常工作。 在Android 2.3上根本没有设置边距,甚至顶部边距也没有设置。
有谁知道如何解决它? 如何在代码中更改间距,以便在所有平台上都能正常工作?