我在将<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_width
和android:layout_height
,我已经完成了。
我做错了什么?
答案 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
<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>