android中利用linearlayout动态添加控件 - androider的专栏 -

合集下载

Android组件---四大布局的属性详解

Android组件---四大布局的属性详解

Android组件---四⼤布局的属性详解【声明】欢迎转载,但请保留⽂章原始出处→_→Android常见布局有下⾯⼏种:LinearLayout:线性布局。

所有的控件都是串在⼀条线上的。

RelativeLayout:相对布局。

所有的控件的位置,都是相对于⽗控件的。

FrameLayout:帧布局。

FrameLayout布局中的控件都是⼀层⼀层的。

帧布局每次添加的控件都显⽰在最上⾯,最后显⽰在界⾯上的是最后添加的⼀个控件。

TableLayout:表格布局。

表格布局可以实现的.⼀般可以使⽤线性布局实现。

AbsoluteLayout:绝对布局。

已经是废弃的状态,很少⽤了。

orientation:属性是指定线性布局的排列⽅向。

horizontal ⽔平。

线性布局默认的朝向是⽔平的。

vertical 垂直例如:android:orientation="vertical"gravity:指定当前控件⾥⾯的内容容显⽰位置。

(四⼤layout中均可使⽤)left 左边right 右边top 上边bottom 底边例如:android:gravity="center"gravity中的属性可以组合使⽤。

例如:android:gravity="bottom|right"layout_gravity:指定当前控件在⽗元素的位置。

(只在 LinearLayout 和 FrameLayout 中有效)left 左边right 右边top 上边bottom 底边centercenter_horizontalcenter_vertical例如:android:layout_gravity="center"另外,需要提⽰的是,对于 LinearLayout :当 android:orientation="vertical" 时,只有⽔平⽅向的设置才起作⽤,垂直⽅向的设置不起作⽤。

Android-0.AndroidStudio布局中layout_weight用法

Android-0.AndroidStudio布局中layout_weight用法

Android-0.AndroidStudio布局中layout_weight⽤法指⽰LinearLayout中多少额外空间分配给与这些LayoutParams关联的视图。

如果视图不应被拉伸,请指定0。

否则,额外空间将在权重⼤于0的所有视图中按⽐例分配。

上⾯有⼏点:1.额外空间,指的是剩余空闲空间, 额外空间将在权重⼤于0的所有视图中按⽐例分配。

如下,总权重为1+1=2第⼀个控件是⽐第⼆个控件占的空间⼩的,即w(12345)+1/2空闲空间< w(123456)+1/2控件<LinearLayoutandroid:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_height"android:layout_weight="1"android:text="12345"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_height"android:layout_weight="1"android:text="123456"/></LinearLayout>如果我们让控件的宽度定义为layout_width="0dp" ,这样⽐如2个控件的 layout_weight="1" 就可以各⾃50%平分整个空间了,因为:0 + 1/2空闲空间 = 0 + 1/2空闲空间。

2.默认layout_weight为0,所以如果这么写:<LinearLayoutandroid:orientation="horizontal"><TextViewandroid:layout_width="40dp"android:layout_height="match_parent"android:background="#000" /><Buttonandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"/><TextViewandroid:layout_width="40dp"android:layout_height="match_parent"android:background="#888" /></LinearLayout>则总权重为1,即Button占了所有剩余空闲空间,⽆论它在哪个位置3.在排列⽅向上设置了match_parent, 如下,权重为2,1,2<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="1"android:layout_weight="2"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="2"android:layout_weight="1"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="3"android:layout_weight="2"/>运⾏结果如下:分析:因为设置的都是match_parent,所以如果没有设置权重,三个Button只会显⽰第⼀个,其他会被覆盖,但是设置了权重后,我们就按三个Button给定的width=match_parent计算剩余空间剩余空间=1个match_parent空间-3个match_parent空间= -2个match_parent空间(负2)所以Button1所占空间 = 1个match_parent空间+(-2个match_parent空间)*2/5 = 1/5个match_parent空间Button2所占空间 = 1个match_parent空间+(-2个match_parent空间)*1/5 = 3/5个match_parent空间Button3所占空间 = 1个match_parent空间+(-2个match_parent空间)*2/5 = 1/5个match_parent空间所以在统⼀设置match_parent时,会有这么⼀个特性,权重越⼤,空间越⼩。

android常用控件大全

android常用控件大全

android常用控件大全在Android中使用各种控件(View)DatePicker-日期选择控件TimePicker-时间选择控件ToggleButton-双状态按钮控件EditText-可编辑文本控件ProgressBar-进度条控件SeekBar-可拖动的进度条控件AutoCompleteTextView-支持自动完成功能的可编辑文本控件MultiAutoCompleteTextView-支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开)ZoomControls-放大/缩小按钮控件Include-整合控件VideoView-视频播放控件WebView-浏览器控件RatingBar-评分控件Tab-选项卡控件Spinner-下拉框控件Chronometer-计时器控件ScrollView-滚动条控件在Android中使用的LayoutFrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角LinearLayout:里面可以放多个控件,但是一行只能放一个控件TableLayout:这个要和TableRow配合使用,很像html里面的tableAbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的x,y的位置RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置(Android界面布局好像还可以直接引用一些view,如ScrollView等)常用控件:1,EditText主要函数:setText/getText设置/获取文本内容,setHint设置缺省显示内容;2,RadioGroup,RadioButtonRadioButton的isChecked()判断是否被选中获取选中RadioButon的ID:设置RadioGroup.setOnCheckedChangeListener方法publiconCheckedChanged(RadioGroupgroup,intcheckedId)//checkedId 是选中RadioButton的ID3,CheckBoxisChecked()判断是否被选中setOnCheckedChangeListener方法监视选中状态改变情况4,Spinnera,显示数据1),硬编码加载通过setAdapter方法设置类型为ArrayAdapter(Contextcontext,inttextViewResId,String[]objects)textViewResourceId:显示内容的ViewID默认设置为yout.simple_spinner_itemobjects:显示的内容2),从资源文件中加载ArrayAdapter.createFromResource(Contextcontext,inttextArrayResId,in ttextViewResId)//textArrayResId是资源ID返回ArrayAdapter<CharSequence>b,设置下拉列表的风格(可选)adapter.setDropDownViewResource(yout.simple_spinner_d ropdown_item);c,监听选项选择变更事件setOnItemSelectedListener设置监听去Spinner.OnItemSelectedListener类须实现以下两个方法publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition ,longid)//view选中项实例,position选择项在adapter中的位置publicvoidonNothingSelected(AdapterView<?>arg0)d,设置选中项Spinner.setSelection(position)//索引从0开始d,获取选中项getSelectedItemPosition()getSelectedItem()//该值toString()则为选中内容的字符串getSelectedItemId()getSelectedView()5,AutoCompleteTextView1,setAdapter设置数据adapter2,设置输入多少个字符显示提示AutoCompleteTextView.setThreshold(intthreshold)6,MultiAutoCompleteTextView(允许输入多值,多值之间会自动地用指定的分隔符分开)1,setAdapter设置数据adapter2,setTokenizer设置提示Tokenizer缺省的为maTokenizer()以逗号分隔7,DatePicker,TimePickera,DatePicker1),设置初始显示日期init(intYear,intmonth,intday,newDatePicker.OnDateChangedListener(){ publicvoidonDateChanged(DatePickerview,intyear,intmonthOfYear,intd ayOfMonth){}})2),获取设置值getYeah()/getMonth()/getDayOfMonth()b,TimePicker1),设置setCurrentHour(IntegercurrentHour)/setCurrentMinuter(Integercurrent Hour)2,setIs24HourView(Boolean)设置是否为24小时制显示3,监听设置改变setOnTimeChangedListenerc,获取系统当期时间和日期Calendar.getInstance()返回CalendarCalendar.get(intfield)---field可以为Calendar.YEAR/Calendar.MONTH/Calendar.DAY_OF_MONTH/Calendar. HOUR_OF_DAY/Calendar.MINUTE8,ImageView/ImageButton主要方法setImageResource设置显示图片setAlpha设置Alphainvalidate强制更新setScaleType(ScaleTypest)设置图片显示方式,st是一枚举setAdjustViewBounds设置是否调整控件适应图片大小setBackgroundResource设置背景9,ImageSwitcher(显示一系列的图片,但当前只显示一张图片)显示数据setFactory(ViewSwitcher.ViewFactoryfactory)设置要显示的数据,ViewFactory接口须实现方法publicViewmakeView(){}负责提供当前显示的视图(ImageView),且View必须为新实例方法setImageResource设置当前显示的图片getCurrentView()返回当前显示的视图setInAnimation(Animationani)设置视图装载入时的动画效果,AnimationUtils.loadAnimation(Contextcontext,intid)获取动画效果android.R.anim.XXsetOutAnimation(Animationani)设置视图装载入时的动画效果10,Gallery(显示一系列的图片,提供拖动等特效)显示数据setAdapter(SpinnerAdapteradapter)设置数据适配器.数据适配器可以继承自BaseAdapter,该类publicViewgetView(intposition,ViewconvertView,ViewGroupparent)返回当前选择的视图(ImageView)选项选中监听setOnItemSelectedListener11,GridView(表格显示一系列图片)显示数据setAdapter(ListAdapteradapter)设置数据适配器.数据适配器可以继承自BaseAdapter,该类publicViewgetView(intposition,ViewconvertView,ViewGroupparent)返回当前选择的视图(ImageView)选项选中监听setOnItemSelectedListenergetSelectedView()返回当前选中的视图12,ScrollView13,ProgressBarsetIndeterminate设置进度条是否自动运转setProgressStyle设置显示风格.ProgressDialog.STYLE_HORIZONTAL/ProgressDialog.STYLE_SPINNE RsetProgress设置进度setMax设置最大值getProgress()获取当前进度14,SeekBar方法setMax设置最大值getProgress()获取当前值setProgress设置值setIndeterminate监听器setOnSeekBarChangeListener其下有三个方法publicvoidonProgressChanged(SeekBararg0,intarg1,booleanarg2)//数值变更,arg1新值,是否TouchpublicvoidonStartTrackingTouch(SeekBarseekBar)//开始拖动publicvoidonStopTrackingTouch(SeekBarseekBar)//结束拖动15,ListViewa,显示数据setAdapter(ListAdapteradapter)adapter可为newSimpleCursorAdapter/SimpleAdapter(Contextcontext,intlayout,Curs orc,String[]from,int[]to)layout用来显示数据的模板.显示一列可用yout.simple_list_item_1两列可用yout.simple_list_item_2多列则需要自己实现xml视图布局文件c数据(可用ArrayList构造数据)from':to用来显示对应列的空件idb,动态增删数据adapter.notifyDataSetChanged()d,设置背景色setBackGroudRource。

安卓控件的操作实验报告

安卓控件的操作实验报告

一、实验目的通过本次实验,掌握安卓常用控件的基本属性、方法和事件处理,熟悉这些控件在实际应用中的使用方法,提高对安卓界面设计的理解和应用能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:Android Studio3.5.33. 手机型号:华为Mate 20三、实验内容本次实验主要涉及以下安卓常用控件:1. TextView2. EditText3. Button4. ImageView5. RadioButton6. CheckBox7. Spinner8. ListView四、实验步骤1. 创建一个新的Android项目,命名为“ControlOperation”。

2. 在布局文件activity_main.xml中添加以下控件:```xml<TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Hello World!"android:layout_marginTop="20dp" /><EditTextandroid:id="@+id/editText1"android:layout_width="match_parent"android:layout_height="wrap_content" android:hint="Enter your name" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Click Me!" /><ImageViewandroid:id="@+id/imageView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <RadioButtonandroid:id="@+id/radioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Male" /><CheckBoxandroid:id="@+id/checkbox1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Subscribe to newsletter" /><Spinnerandroid:id="@+id/spinner1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/countries" /><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content" />```3. 在strings.xml文件中添加以下字符串资源:```xml<string name="app_name">Control Operation</string> <string name="enter_name">Enter your name</string> <string name="click_me">Click Me!</string><string-array name="countries"><item>China</item><item>USA</item><item>Japan</item></string-array>```4. 在MainActivity.java文件中添加以下代码:```javaimport android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.ScrollView;import android.widget.TextView;import android.widget.CheckBox;import android.widget.Spinner;import android.widget.ListView;import android.widget.ArrayAdapter;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private TextView textView1;private EditText editText1;private Button button1;private ImageView imageView1;private RadioButton radioButton1;private CheckBox checkBox1;private Spinner spinner1;private ListView listView1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);textView1 = findViewById(R.id.textView1);editText1 = findViewById(R.id.editText1);button1 = findViewById(R.id.button1);imageView1 = findViewById(R.id.imageView1);radioButton1 = findViewById(R.id.radioButton1);checkBox1 = findViewById(R.id.checkbox1);spinner1 = findViewById(R.id.spinner1);listView1 = findViewById(R.id.listView1);ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource(this,R.array.countries, yout.simple_spinner_item);adapter.setDropDownViewResource(yout.simple_spinner_dropdown _item);spinner1.setAdapter(adapter);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = editText1.getText().toString();Toast.makeText(MainActivity.this, "Hello " + name, Toast.LENGTH_SHORT).show();}});radioButton1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "You selected Male", Toast.LENGTH_SHORT).show();}});checkBox1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (checkBox1.isChecked()) {Toast.makeText(MainActivity.this, "You subscribed to the newsletter", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "You unsubscribed from the newsletter", Toast.LENGTH_SHORT).show();}}});}}```5. 运行程序,观察效果。

Android移动应用开发实验指导书.docx

Android移动应用开发实验指导书.docx

《Android移动应用开发》实验指导书课程代码:总课时数:适用专业:院(系)名称:实验一深入理解Activity目标(1)掌握Activity的开发、配置和使用。

(2)掌握Intent的几种常用的属性。

(3)Android系统内置Intent的使用。

(4)了解Activity的生命周期实验软、硬件环境硬件:PC电脑一台;配置:winxp或win7系统,内存大于4G,硬盘250G及以上JDK1.7 、Eclipse、ADT、Android SDK实验主要技术基础(1)活动是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。

(2)Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

任务:1、请在AndroidManifest.xml文件中配置SecondActivity;配置Intent的Action属性为com.sise.intent.action.JHY_ACTION。

配置Category属性为com.sise.intent.category.JHY_CATEGORY通过隐式Intent的使用从FirstActivity,编写代码,运行程序,预期效果启动SecondActivity如下所示。

图1 程序运行初始化界面 图2 点击图1中的按钮后的运行结果。

传递数据到SecondActivity,并使用Intent从FirstActiv2、请使用显式Intent启动SecondActivity编写代码,运行程序,预期效果如下所示。

图1 程序运行初始化界面图2 点击图1中的按钮后的运行结果3、使用Intent传递数据从SecondActivity返回数据到FirstActivity中去。

编写代码,运行程序,预期效果如下所示。

图1 程序运行初始化界面图2 点击图1按钮运行结果图3 点击图2按钮运行结果实验方法与步骤(1)创建活动Activity是Android系统提供的一个活动基类所有的活动都必须直接或间接继承此类才能拥有活动的特性。

Android使用addView动态添加组件的方法

Android使用addView动态添加组件的方法

Android使⽤addView动态添加组件的⽅法在项⽬开发中,我们经常需要进⾏动态添加组件,其中可添加的部分有两项:布局和组件其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局)添加的组件主要有⽂本显⽰框,编辑框,按钮等组件。

下⾯,就让我们来进⾏实现:⾸先我们创建⼀个新的项⽬,删除MainActivity.class中没有的代码,仅留下protected void onCreate(Bundle savedInstanceState)函数往布局⽂件中添加⼀个新的组件:1. addView⽅法简介在Android中,addView(ViewGroup view, index)在指定的index处添加⼀个view。

可以利⽤排版View的 addView 函数,将动态产⽣的View 物件加⼊到排版View 中。

2、⽰例:(1)⾸先我们往布局⽂件中添加⼀个组件,⽐如⼀个⽂本,两个按钮,此时我们需要在布局⽂件中添加⼀个布局项<LinearLayout>,定义其id为linearlay_1,⽤于在添加组件时识别,布局⽂件代码如下所⽰:<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="动态添加组件⽰例"android:id="@+id/textview"/><LinearLayoutandroid:layout_below="@+id/textview"android:id="@+id/linearlay_1"android:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="vertical"></LinearLayout>然后我们在Activity类⾥边进⾏添加组件,代码如下所⽰:/*** 代码中,布局的位置,是垂直顺序排列的因为界⾯代码Linerlayout的orientation设置的是* vertical的,但是为了美观,需要设置添加的View的位置和样式。

Android属性动画框架ObjectAnimator、ValueAnimator,这一篇就够了

Android属性动画框架ObjectAnimator、ValueAnimator,这一篇就够了

Android属性动画框架ObjectAnimator、ValueAnimator,这⼀篇就够了前⾔我们都知道 Android ⾃带了 Roate Scale Translate Alpha 多种框架动画,我们可以通过她们实现丰富的动画效果,但是这些宽家动画却有⼀个致命的弱点,它们只是改变了 View 显⽰的⼤⼩,⽽没有改变 View 的响应区域。

这时以 ObjectAnimator、ValueAnimator 为代表的属性动画也就应运⽽⽣了。

简单效果⼯作原理属性动画字如其名,是通过改变 View 的属性值来改变控件的形态,说⽩了就是通过反射技术来获取控件的⼀些属性如宽度、⾼度等的 get 和 set ⽅法,从⽽实现所谓的动画效果。

所以,这就需要我们的 View (如⾃定义 View 中)具有 set 和 get ⽅法,如果没有则会导致程序的Clash 。

具体步骤1. ⾸先,系统通过 get ⽅法获得属性值2. 系统在时间插值器的作⽤下,更变属性值3. 系统调⽤ set ⽅法,将属性值重新赋予控件由此也可以看出:属性动画直接改变了控件的属性,所以动画结束后控件也就发⽣了永久性的变化。

使⽤ ObjectAnimator 实现四种动画这⾥我打算通过使⽤ ObjectAnimator 实现四⼤动画框架:1. alpha2. scaleX/scaleY3. translateX/translateY4. rotation给⼤家讲解下 ObjectAnimator 使⽤private void iniAnimation(){// 透明度动画ObjectAnimator.ofFloat(mAlphaImage, "alpha", 1, 0, 1).setDuration(4000).start();// 缩放final AnimatorSet animatorSet = new AnimatorSet();mScaleImage.setPivotX(mScaleImage.getWidth()+250);mScaleImage.setPivotY(mScaleImage.getHeight()+250);animatorSet.playTogether(ObjectAnimator.ofFloat(mScaleImage, "scaleX", 1, 0).setDuration(2000),ObjectAnimator.ofFloat(mScaleImage, "scaleY", 1, 0).setDuration(2000));animatorSet.start();// 平移 translationfinal AnimatorSet translationAnimatorSet = new AnimatorSet();translationAnimatorSet.playTogether(ObjectAnimator.ofFloat(mTranslationImage, "translationX", 20, 100).setDuration(2000),ObjectAnimator.ofFloat(mTranslationImage, "translationY", 20,100).setDuration(2000));translationAnimatorSet.start();// 利⽤ ObjectAnimator 实现旋转动画final AnimatorSet rotateAnimationSet = new AnimatorSet();rotateAnimationSet.playTogether(ObjectAnimator.ofFloat(mRotationImage, "rotation",0, 360).setDuration(2000));rotateAnimationSet.start();}以上代码就通过了 ObjectAnimator 实现了,四⼤效果,实现过程基本可以归纳为1. 创建 AnimatorSet 对象2. 设置,变化发⽣的轴⼼(部分需要)3. 设置所需要发⽣改变的动画(通常在 playTogether() ⽅法中)4. 开启动画最后的运⾏效果如开头动画所⽰同样的,我们可以在⼀个 playTogether ⽅法中添加多个动画,这样就能实现多动画组合的效果。

[Android开发学习23]界面布局之线性布局LinearLayout

[Android开发学习23]界面布局之线性布局LinearLayout
AAA @OverrideA AAA public boolean onCreateOptionsMenu(Menu menu) {A AAAAAAA // Inflate the menu; this adds items to the action bar if it is present.AA AAAAAAA getMenuInflater().inflate(R.menu.activity_main, menu);A AAAAAAA return true;A AAA }A
AAid="@+id/edtInput",ID 是连接UI 与代码的桥梁 AAlayout_width="fill_parent" ,自动填充至屏幕宽度 AAlayout_width="wrap_content" ,自动填充为控件大小 AA AA在LinearLayout 里面的控件,按照水平或者垂直排列: AAAorientation="horizontal" :水平排列; AAAorientation=" vertical" :垂直排列 AAA AAandroid:idA —— 为控件指定相应的ID AAandroid:text —— 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串 AAandroid:grivity —— 指定控件的基本位置,比如说居中,居右等位置 AAandroid:textSize —— 指定控件当中字体的大小 AAandroid:background —— 指定该控件所使用的背景色,RGB命名法 AAandroid:width —— 指定控件的宽度 AAandroid:height —— 指定控件的高度 AAandroid:padding* —— 指定控件的内边距,也就是说控件当中的内容 AAandroid:sigleLine —— 如果设置为真的话,则将控件的内容在同一行当中进行显示 AAAAAA --> AA <EditText AAAAAA android:id="@+id/edtInput" AAAAAA android:layout_width="fill_parent" AAAAAA android:layout_height="wrap_content" AAAAAA android:text="@+string/hello_world" AAAAAA />
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android中利用LinearLayout动态添加控件- Androider的专栏-...在androidUI布局中,一般都是利用xml来布局控件,这是比较方便和直观的,但是有时却需要动态生成,下面就举2个简单例子来说明怎么动态添加控件:1.动态添加2个垂直排列的Buttonview plaincopy to clipboardprint?01. @Override02. public void onCreate(Bundle savedInstanceState) {03. super.onCreate(savedInstanceState);04. //setContentView(yout.main);05. final LinearLayout layout2=newLinearLayout(this);06.layout2.setOrientation(LinearLayout.VERTICAL);07. Button btn1=new Button(this);08. setContentView(layout2);09. Button btn2=new Button(this);10. btn1.setText("Button1");11. btn2.setText("Button2");12. layout2.addView(btn1);13. layout2.addView(btn2);14.15.16. setContentView(layout2);17.}@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//setContentView(yout.main);final LinearLayout layout2=new LinearLayout(this);layout2.setOrientation(LinearLayout.VERTICAL);Button btn1=new Button(this);setContentView(layout2);Button btn2=new Button(this);btn1.setText("Button1");btn2.setText("Button2");layout2.addView(btn1);layout2.addView(btn2);setContentView(layout2);}final LinearLayout layout2=new LinearLayou(this);定义一个LinearLayout ,参数为context在这儿即为this layout2.setOrientation(LinearLayout.VERTICAL);设置layout格式为vertical,竖直排列2.在Button的click事件中动态添加一个buttonview plaincopy to clipboardprint?&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183; &#183;10&#183;&#183;&#183;&#183;&#183;&#183;&#18 3;&#183;20&#183;&#183;&#183;&#183;&#183;&#183;&#1 83;&#183;30&#183;&#183;&#183;&#183;&#183;&#183;&# 183;&#183;40&#183;&#183;&#183;&#183;&#183;&#183;& #183;&#183;50&#183;&#183;&#183;&#183;&#183;&#183; &#183;&#183;60&#183;&#183;&#183;&#183;&#183;&#18 3;&#183;&#183;70&#183;&#183;&#183;&#183;&#183;&#1 83;&#183;&#183;80&#183;&#183;&#183;&#183;&#183;&# 183;&#183;&#183;90&#183;&#183;&#183;&#183;&#183;& #183;&#183;&#183;100&#183;&#183;&#183;&#183;&#18 3;&#183;&#183;110&#183;&#183;&#183;&#183;&#183;&# 183;&#183;120&#183;&#183;&#183;&#183;&#183;&#183; &#183;130&#183;&#183;&#183;&#183;&#183;&#183;&#1 83;140&#183;&#183;&#183;&#183;&#183;&#183;&#183;1 5001.OnClickListener listen1;02. @Override03. public void onCreate(Bundle savedInstanceState) {04. super.onCreate(savedInstanceState);05. //setContentView(yout.main);06. final LinearLayout layout2=newLinearLayout(this);07.layout2.setOrientation(LinearLayout.VERTICAL);08. Button btn1=new Button(this);09. setContentView(layout2);10. Button btn2=new Button(this);11. btn1.setText("Button1");12. btn2.setText("Button2");13. layout2.addView(btn1);14. layout2.addView(btn2);15. listen1 = new OnClickListener() {16. public void onClick(View v) {17. setTitle("点击button1 ");18. Button btn3=new Button(v.getContext());19. layout2.addView(btn3);20. btn3.setText("Button3");21.22.23. }24. };25. btn1.setOnClickListener(listen1);26. }OnClickListener listen1;@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//setContentView(yout.main);final LinearLayout layout2=new LinearLayout(this);layout2.setOrientation(LinearLayout.VERTICAL);Button btn1=new Button(this);setContentView(layout2);Button btn2=new Button(this);btn1.setText("Button1");btn2.setText("Button2");layout2.addView(btn1);layout2.addView(btn2);listen1 = new OnClickListener() {public void onClick(View v) {setTitle("点击button1 ");Button btn3=new Button(v.getContext());layout2.addView(btn3);btn3.setText("Button3");}};btn1.setOnClickListener(listen1);}与上一例子区别就是,在Button的OnClickListener中动态添加控件,需要注意的一点是Button btn3=newButton(v.getContext);参数v.getContext为当前view的context,为什么例子1中用this作为context呢,呵呵,这是因为this即当前的activity,而activity又是context的子类,所以this就可以直接作为activity了。

查了下,context派生的类有:ng.Objectandroid.content.ContextKnown Direct SubclassesContextWrapper , MockContextContextWrapper Proxying implementation of Context that simply delegates all of its calls to another Context.MockContext A mock Context class.Known Indirect Subclasses AbstractInputMethodService , Activity , ActivityGroup , AliasActivity , Application , ContextThemeWrapper , ExpandableListActivity , InputMethodService , IntentService , IsolatedContext , LauncherActivity , ListActivity , MockApplication , MutableContextWrapper , PreferenceActivity , RenamingDelegatingContext , Service , TabActivity本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx。

相关文档
最新文档