我使用framelayout并在里面我有2个textview,如果我使用
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
我的布局在Android 2.2中显示不正确,而在Android 4.0中也一样正常。
这是完整的代码。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:gravity="left|center"
android:text= "Testing String"
android:textSize="15sp"
android:textColor="@color/LIGHTGRAY"
android:layout_gravity="left|top"/>
<TextView
android:id="@+id/ID_due_date"
android:textStyle="bold"
android:textSize="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text= "Testing String"
android:layout_marginTop="10dp"
android:layout_gravity="right"
android:gravity="left|center"/>
</FrameLayout>
</ScrollView>
在Android 2.2中,它看起来像这样
在Android 4.0 ICS中,它看起来像这样
答案 0 :(得分:4)
Android 2.2(Froyo)和2.3(Gingerbread)中存在一个错误,其中FrameLayout
内的边距不适用于未设置layout_gravity
属性的子项。你可以在这里看到它:https://code.google.com/p/android/issues/detail?id=28057
这个bug已在Android 3.0(Honeycomb)中修复。
您的问题与此错误有关。您确实设置了layout_gravity
属性,因此边距已正确应用 - 视图从顶部和侧面偏移10dp
。不幸的是FrameLayout
不知道如何衡量这些孩子,所以它的边界是在没有这些边距的情况下计算出来的 - 这就是孩子们在底部被切割的原因(10dp
)。
高度为FrameLayout
的{{1}}不会受此问题的影响,但在您的情况下,您的行为设置为match_parent
。 (请注意即使您将高度设置为wrap_content
,它仍将作为fill_parent
使用,因为它位于wrap_content
内。
请尝试使用填充 - 在大多数情况下(背景或可点击区域不重要)边距可以用填充替换。
答案 1 :(得分:1)
您可以使用填充:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:gravity="left|center"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:text="Testing String"
android:textColor="@color/LIGHTGRAY"
android:textSize="15sp" />
<TextView
android:id="@+id/ID_due_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="left|center"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:text="Testing String"
android:textSize="15sp"
android:textStyle="bold" />
</FrameLayout>
</ScrollView>