Android包含标记而不是覆盖布局属性

时间:2013-08-05 19:12:59

标签: android attributes include margin

我在将<include><merge>结合使用时遇到问题。我正在使用最新的Android SDK(4.3)在Eclipse上进行开发。这是我的示例代码:

test_merge.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FFFF0000" >
    </View>

</merge>

test_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include layout="@layout/test_merge" 
        android:layout_width="100dp" 
        android:layout_height="100dp"/>

</LinearLayout>

MyActivity.java

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_main);
    }
}

问题是我应该在左上角看到一个红色正方形,100x100dp。相反,整个屏幕都是红色的。因此,由于某些原因,android:layout_width中的android:layout_height<include>属性无效。

我已阅读文档,并说它为了通过<include>代码覆盖属性,我必须覆盖android:layout_widthandroid:layout_height,我已经完成了。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

使用merge时,没有父亲可以将100dp应用于。尝试切换到FrameLayout而不是merge或(甚至更好),在这种情况下,您可以删除merge并将View作为根。

修改

将test_merge.xml更改为:

<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#FFFF0000" >
</View>

答案 1 :(得分:0)

尝试在所包含的layout

中设置这些属性0
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_height="0dp" >

    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#FFFF0000" >
    </View>

</merge>