动态添加Android(安卓)控件?

动态添加Android(安卓)控件?,第1张

动态添加Android(安卓)控件步骤:

1、addView

添加控件到布局容器

2、removeView

在布局容器中删掉已有的控件

3、使用

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

// 生成一个LinearLayout,作为布局容器来动态添加3个Button

final LinearLayout layout = new LinearLayout(this)

layout.setOrientation(LinearLayout.VERTICAL)

setContentView(layout)

// 生成3个Button

final Button btn1 = new Button(this)

btn1.setText("1")

btn1.setText("Button1")

final Button btn2 = new Button(this)

btn2.setText("2")

btn2.setText("Button2")

final Button btn3 = new Button(this)

btn3.setText("3")

btn3.setText("Button3")

// 动态把三个Button添加到

layout.addView(btn1)

layout.addView(btn2)

layout.addView(btn3)

// 点击按钮时,先把原来在布局容器layout上的删掉,再添加上局容器layout,这样本次添加的控件就会排序到最后,以理解动态添加控件的思路

btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

layout.removeView(btn1)

layout.addView(btn1)

}

})

// 同btn1一样道理

btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

layout.removeView(btn2)

layout.addView(btn2)

}

})

// 同btn1一样道理

btn3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

layout.removeView(btn3)

layout.addView(btn3)

}

})

setContentView(layout)

}

}

在代码中可以动态的添加、移除控件;可以先获得一个layout的根标签layoutview,然后使用layoutview.addview(XXX),layoutview.removeview(XXX)之类的方法,动态添加、移除view,代码中也是可以控制布局的,找点资料看看就明白了,几句话也说不太明白。

很多人在网上说ViewPager的PagerAdapter.notifyDataSetChanged()无效。刚开始我也这样认为,甚至被误导以为是真理。

后来,找了一下,在PagerAdatpar重写getItemPosition(),return POSITION_NONE即可每次刷新加载图面。这是关键点。

这时,如果只是修改"DataSet",如List等这类的,然后再notifyDataSetChanged(),会发现出现界面重叠。解决办法是重写destroyItem(),把ViewGroup强转为ViewPager,Object强转为View。最后ViewGroup.removeView()即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7969669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存