<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一:正常用法</span>
正常加载布局就可以了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="功能1" />
</LinearLayout>
二:接下来进入正文
用一个实例介绍
java代码
JAVA代码 Function1.class
<span> </span><pre name="code" class="java">package com.example.testdemo.Function1;
import com.example.testdemo.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
/**
* 功能1
* @author Administrator
*
*/
public class Function1 extends Activity{
private LinearLayout mFunction;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.aty_function1);
/**
* 加载布局
*/
mFunction = (LinearLayout) findViewById(R.id.layout_function1);
LayoutInflater layoutInflater = LayoutInflater.from(this);
View buttonLayout = layoutInflater.inflate(R.layout.aty_function1_button, null);
mFunction.addView(buttonLayout);
}
}
xml代码 R.layout.aty_function1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_function1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
xml代码 aty_function1_button
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试按钮"
/>
运行它一切正常,接下来我们把layout_width改成100dp问题来了,按钮的宽度并没有改变
三:原因
android:layout_width="wrap_content"
android:layout_height="wrap_content"
只在布局中有效
那么平时我们在用的时候最外层的布局怎么有效呢,
确实,那是因为setContentView()方法中,android会自动在布局文件的最外层再嵌套一个FrameLayout
四:怎么解决
aty_function1_button外面加一个布局。
五:获取最外层布局
修改代码
package com.example.testdemo.Function1;
import com.example.testdemo.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewParent;
import android.widget.LinearLayout;
/**
* 功能1
* @author Administrator
*
*/
public class Function1 extends Activity{
private LinearLayout mFunction;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.aty_function1);
/**
* 加载布局
*/
mFunction = (LinearLayout) findViewById(R.id.layout_function1);
//获取最外层布局
ViewParent viewParent = mFunction.getParent();
System.out.println("最外层布局是:"+viewParent);
LayoutInflater layoutInflater = LayoutInflater.from(this);
View buttonLayout = layoutInflater.inflate(R.layout.aty_function1_button, null);
mFunction.addView(buttonLayout);
}
}
运行结果