动态生成控件
来源:互联网 发布:d3.js 入门案例 编辑:程序博客网 时间:2024/04/30 10:45
package com.example.uitest;import android.app.Activity;import android.os.Bundle;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;public class MainActivity extends Activity { private Button btNext; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btNext=(Button)findViewById(R.id.next); btNext.setOnClickListener(new Button.OnClickListener(){ public void onClick(View view){ //创建一个布局管理器控件 LinearLayout linearLayout=new LinearLayout(MainActivity.this); setContentView(linearLayout); //设置orientation为horizontal,1表示为vertical linearLayout.setOrientation(1); TextView tvSecond=new TextView(MainActivity.this); tvSecond.setText("这是Android奉献给你的第二个页面"); Button btNext2_1=new Button(MainActivity.this); btNext2_1.setText("下一步"); btNext2_1.setId(2); Button btNext2_2=new Button(MainActivity.this); btNext2_2.setText("上一步"); btNext2_2.setId(3); LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); linearLayout.addView(tvSecond,lp1); linearLayout.addView(btNext2_1,lp1); linearLayout.addView(btNext2_2,lp1); btNext2_1.setOnClickListener(new OnClickListener(){ public void onClick(View view){ //这次只放置一个TextView不需要布局管理器 TextView tv3=new TextView(MainActivity.this); tv3.setText("恭喜你已来到最后一个页面!"); //直接让页面显示一个TextView setContentView(tv3); } }); btNext2_2.setOnClickListener(new OnClickListener(){ public void onClick(View view){ //这次只放置一个TextView不需要布局管理器 setContentView(R.layout.test1); } }); } }); }}
这里涉及到几个类的构造函数和方法,我把Android SDK文档中的内容直接引用过来:
Public Constructors
LinearLayout(Context context)
LinearLayout(Context context, AttributeSet attrs)
public void setOrientation (int orientation)
Should the layout be a column or a row.
Related XML Attributes
android:orientation
Parameters orientation Pass HORIZONTAL or VERTICAL. Default value is HORIZONTAL.
Constant Value Description
horizontal 0 Defines an horizontal widget.
vertical 1 Defines a vertical widget.
This corresponds to the global attribute resource symbol orientation.
Public Constructors
LinearLayout.LayoutParams(Context c, AttributeSet attrs)
LinearLayout.LayoutParams(int width, int height)
addView方法的定义在ViewGroup类中
//Adds a child view with the specified layout parameters.
void addView(View child, ViewGroup.LayoutParams params)
//Adds a child view with the specified layout parameters.
void addView(View child, int index, ViewGroup.LayoutParams params)
看一下这里的继承关系:
java.lang.Object ↳android.view.View ↳android.view.ViewGroup ↳android.widget.LinearLayout
另外注意,为什么在传递Context参数时必须用Show.this而不能直接用this呢?因为此时我们已经进入了一个匿名类new Button.OnClickListener()中,虽然这个匿名类还是在Show类,但是我们的代码已经不再“直属”于Show类了。
运行效果图:
- 动态生成控件
- VB 动态生成控件
- 动态生成控件
- 动态生成自定义控件
- 动态生成控件
- 动态生成控件web
- Android 动态生成控件
- Android 动态生成控件
- c# 动态生成 控件
- 对话框动态生成控件
- C#动态生成控件
- 动态生成DropDownList控件
- 动态生成控件
- 动态生成用户控件
- BCB 动态生成控件
- bcb 动态生成控件
- 【C++】动态生成控件
- 代码动态生成控件
- DELPHI下的SOCK编程(转)
- LeetCode OJ - Linked List Cycle I and II 初中数学解释
- 使用xdebug进行调试
- ITK简介与ITK Pipeline
- CVPR 2014 物体检测论文汇总
- 动态生成控件
- ffmpeg参数中文详细解释
- [工具安装记][xz] xz format: source compilation installation
- leetcode刷题5:找出链表中环的位置
- C#-Label-标签格式---ShinePans
- android截屏功能实现
- 构造最大数
- hdu 1241 Oil Deposits
- css笔记(一)——文档流和盒子