Android 动态生成布局 (多层嵌套)

Android 除了能够载入xml文件,显示布局外,也能够代码生成布局,并通过setContentView(View view)方法显示布局。单独的一层布局,如一个主布局加一个控件(如Button\imageView等)动态生成代码比較简单。以下仅仅给出演示样例代码:

package com.example.android_dongtaishengcheng;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.RelativeLayout.LayoutParams;

public class MainActivity extends Activity
{
    RelativeLayout relativeLayout = null;
    private Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
	super.onCreate(savedInstanceState);
	relativeLayout = new RelativeLayout(this);
	LayoutParams params = new LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
		RelativeLayout.LayoutParams.MATCH_PARENT);
	relativeLayout.setLayoutParams(params);
	relativeLayout.setBackgroundResource(R.color.back);
	setContentView(relativeLayout);
	
	button = new Button(this);
	LayoutParams params2 = new LayoutParams(300, 300);
	button.setLayoutParams(params2);
	params2.addRule(RelativeLayout.CENTER_IN_PARENT);
	button.setText("hello");
	relativeLayout.addView(button);
	button.setOnClickListener(new View.OnClickListener()
	{
	    
	    @Override
	    public void onClick(View v)
	    {
		// TODO Auto-generated method stub
		startActivity(new Intent(MainActivity.this,SecondActivity.class));
	    }
	});
    }
}
以下进入重点:多层嵌套布局的动态生成。

情景描写叙述:父布局是一个线性布局,其子布局按竖直方向排列。子布局的子布局也是一个线性布局,按水平方向排列。


事实上非常easy,关键点在于。怎样控制主布局的子布局换行显示。即实现Orientation = "vertical"。能够在子布局外在加一层布局,即以下的drawParent()方法,该方法用来生成父布局的直接子布局,drawView()方法用来生成直接子布局的子布局(该布局也是多层嵌套)。能够实现例如以下图效果:


贴出代码例如以下:


}









本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5111135.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值