发现Android 4.0以下系统对FrameLayout子View setMargin无效,写Demo测试了一下:
<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"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginTop="100dp"
android:text="@string/hello_world" />
</FrameLayout>
4.1.1系统显示效果:
2.3.6系统显示效果:
添加属性 android:layout_gravity="top" 或 left 或 top | left或start 后在2.3.6系统上显示正常。
在Android API 19中,FrameLayout设置了默认的重力属性:
private static final int DEFAULT_CHILD_GRAVITY = Gravity.TOP | Gravity.START;
猜想上面出现的问题是因为在Android 4.0以下系统中FrameLayout没有设置默认重力属性。