动态设置布局属性

8.4.5 动态设置布局属性
在上一节的例子中我们会发现如果将activity_load_layout.xml文件中标签的android:gravity属性值设为"center_horizontal",或将item.xml文件中标签的android:layout_gravity属性值设为"center_horizontal",或将这两个属性值设为"right",动态添加的10个视图并没有居中或右对齐。原因是动态添加视图时并不会采用静态方式设置布局,而要想重新设置布局属性,就需要使用LayoutParams类。但要注意,由于主窗口布局使用的是LinearLayout布局,所以要使用android.widget.LinearLayout.LayoutParams类。修改后的LoadLayoutActivity类的代码如下:
源代码文件:src/ch08/LoadLayout/src/mobile/android/load/layout/LoadLayoutActivity.java

public class LoadLayoutActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout parent = (LinearLayout) getLayoutInflater().inflate(
R.layout.activity_load_layout, null);
for(int i = 1; i <= 10; i++)
{
View view = getLayoutInflater().inflate(R.layout.item, null);
TextView textView = (TextView)view.findViewById(R.id.textview);
textView.setText("text" + i);
// 创建LayoutParams对象
android.widget.LinearLayout.LayoutParams layoutParams = new
android.widget.LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// 设置gravity字段的值(水平居中)
layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
// 动态添加视图时指定父视图(LinearLayout)的布局参数
parent.addView(view, layoutParams);
}
setContentView(parent);
}
}

运行修改后的程序,所有的控件都会居中显示。

你可能感兴趣的:(动态设置布局属性)