布局的layout文件内容:
----------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/linearlayout">
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:layout_height="wrap_content" android:id="@+id/add"
android:text="Add" android:layout_width="100px"></Button>
<Button android:layout_height="wrap_content"
android:layout_width="100px" android:text="Remove" android:id="@+id/remove"></Button>
</LinearLayout>
<TextView android:id="@+id/TextView01" android:text="This is textView."
android:layout_width="fill_parent" android:gravity="center"
android:layout_height="50px"></TextView>
</LinearLayout>
----------------------------------------------------------------------------------
对应Activity的内容:
----------------------------------------------------------------------------------
package com.foxconn.dialog;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
public class DialogTest extends Activity implements OnClickListener {
private Button add_btn, remove_btn;
private LinearLayout linearLayout;
private int index = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
register();
}
private void register() {
add_btn.setOnClickListener(this);
remove_btn.setOnClickListener(this);
}
private void findViews() {
add_btn = (Button) findViewById(R.id.add);
remove_btn = (Button) findViewById(R.id.remove);
linearLayout = (LinearLayout) findViewById(R.id.linearlayout);
}
protected View createView() {
Button btn = new Button(this);
btn.setId(index++);
btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btn.setText("aaaaaa" + index);
return btn;
}
private void removeView() {
//获取linearlayout子view的个数
int count = linearLayout.getChildCount();
//研究整个LAYOUT布局,第0位的是含add和remove两个button的layout
//第count-1个是那个文字被置中的textview
//因此,在remove的时候,只能操作的是0<location<count-1这个范围的
//在执行每次remove时,我们从count-2的位置即textview上面的那个控件开始删除~
if (count - 2 > 0) {
//count-2>0用来判断当前linearlayout子view数多于2个,即还有我们点add增加的button
linearLayout.removeViewAt(count - 2);
}
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.add:
linearLayout.addView(createView(), 1);
break;
case R.id.remove:
removeView();
break;
default:
break;
}
}
}
分享到:
相关推荐
在Android应用程序开发中,动态添加和删除控件或布局是一项常用且重要的技能。这使得我们的应用能够根据用户交互或者特定条件灵活地改变界面。本文将深入探讨如何在Android程序中实现这一功能,以及如何设置控件的...
### ArcGIS教程:在页面布局中处理数据框 #### 知识点一:理解布局视图与数据视图的区别 在ArcGIS软件中,布局视图(Layout View)与数据视图(Data View)是两种不同的操作模式。布局视图主要用于处理页面上的...
Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局...
此外,QT还提供了`QLayout`类的一些方法,如`addWidget()`, `addStretch()`, `removeWidget()`等,用于在布局中添加、删除或插入控件。`addStretch()`方法特别有用,它可以添加一个“伸展”项,使布局有更多的空间可...
XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果,...笔者认为,新手索要掌握的java动态设置布局主要有两点,一方面是对布局的属性进行修改,另一方面是增添和删除控件。
当不再需要布局时,应使用`deleteLater()`方法安全地删除布局,防止内存泄漏。 总结起来,布局管理是Qt GUI开发中不可或缺的一部分,它使得开发者可以轻松创建适应性强、美观的用户界面。理解并熟练掌握各种布局...
6. **动态添加和删除布局**:在运行时,可以通过Java代码动态添加或删除布局元素。这对于创建可变的或者根据用户行为改变的界面非常有用。 7. **数据绑定**:使用Data Binding库,可以将数据直接绑定到UI元素,简化...
- 使用控件的Visible属性控制显示和隐藏,而非删除和重新创建,以保持状态和提高性能。 通过理解并掌握DockPanel Suite的这些特点和使用技巧,开发者能够构建出更加灵活、用户友好的Winform应用程序。无论是简单的...
布局动画(Layout Animation)是Android系统提供的一种在添加或删除视图时触发的动画效果,能够使界面动态地展示变化,增加应用的吸引力。本文将深入探讨Android布局动画的原理、使用方法以及如何通过代码实现。 一...
如果删除此权限对象,用户将失去设置特定用户布局的能力,除非同时赋予他们 S_GUI 权限,因为 S_GUI 是 SAP GUI 的基础权限,包含基本的导出功能,如 Excel 导出。 2. **S_ALV_LAYR**:这个权限对象允许管理员针对...
// 删除布局对象,防止内存泄漏 ``` 通过以上介绍,我们可以了解到QT界面布局的强大之处,它使得开发者可以方便地组织和调整控件,创建出美观且用户友好的界面。在实际项目中,根据需求选择合适的布局策略,结合...
总结,实现“StreamList横向流式布局点击删除”的功能需要理解Android布局系统,熟练掌握自定义ViewGroup、Adapter以及事件监听机制。通过以上步骤,我们可以创建一个高效的、具有删除功能的流式布局,提升应用的...
这个库的主要目的是处理那些在大小和数量上变化不定的控件,例如在一个应用中,用户可能需要动态添加或删除控件,而QtFlowlayout能够优雅地适应这种需求,实现类似瀑布流的效果。 在Qt框架中,通常使用QLayout来...
此外,Android提供了多种方法来动态添加或删除布局中的控件,以及改变控件的属性,例如使用`findViewById()`获取控件实例,然后调用其方法或修改属性。 总的来说,理解并熟练掌握Android布局是开发高质量应用程序的...
3. **灵活性**:`MCUIViewLayout`允许你在运行时动态地添加、修改或删除布局规则。这使得它在处理响应式设计或不同屏幕尺寸时特别有用。 4. **性能优化**:由于`MCUIViewLayout`是在UIKit的布局系统之上构建的,它...
1. **创建和管理布局**:学习如何新建、重命名和删除布局选项卡,理解布局模板的作用,以及如何自定义布局设置以适应不同的打印需求。 2. **布局空间与模型空间的转换**:了解如何在布局和模型空间之间切换,以及...
网上很多流式布局的列子,大部分都不能满足需求,大部分都不能拖动,有的可以拖动但是都是GridView式布局所以不能满足流式布局的基本要求,所以自己封装一个可删除,可添加,长按可以拖动流式布局。 ——————...
Qt的布局系统允许我们在运行时动态调整布局,如添加、删除或移动控件。这种灵活性对于响应式设计至关重要,尤其是在跨平台的应用程序中。 8. 布局和信号与槽: 布局与Qt的信号与槽机制紧密相连。当窗口大小改变...
6. **Android的布局动画**:可以为布局的添加、删除或改变提供动画效果,增强用户体验。 7. **性能优化**:避免过度绘制和深度嵌套的布局,使用`ViewStub`减少未使用布局的加载,使用`LayoutInflater`进行视图复用...
Qt FlowLayout布局是一种在Qt应用开发中用于组织控件的自定义布局管理器。与标准的Qt布局(如QVBoxLayout、QHBoxLayout和QGridLayout)不同,FlowLayout允许控件按照特定的方向(水平或垂直)流式排列,当空间不足时...