我希望创建一个UI,最初有一个按钮,当点击它时,会在屏幕顶部添加一个TextView和EditText(放在一个单独的XML文件中进行充气),而按钮则移到EditText上。再次单击该按钮会在之前的按钮下方添加另一个TextView和EditText,然后按钮再次移动到下方(有点像我们通过按下绿色的“+”图标向android中的联系人添加新号码)。
我已经能够从程序中膨胀TextView和EditView,但是所有视图的位置都不正确:我得到TextView和EditText,但单击时按钮会消失。我会很感激一些示例代码,它们展示了如何做我所描述的内容。
答案 0 :(得分:0)
这基本上与LayoutParams有一些乐趣。
为了使它更容易,您应该继续创建几个与xclipse布局的eclipse视觉开发区域类似的项目。这将有助于您更好地了解制作特定外观所需的属性。
考虑到这些属性,您可以继续将它们转换为动态添加它的代码。
这基本上是基本方法: 1.转到您的xml布局并添加一些文本字段和/或编辑文本到您喜欢的首选项,就像您是手机一样,并且用户正在按动态添加这些视图所需的按钮。
查看您调整后的属性以获得特定外观
这是所有这些的基本编码方法:
在这里,我将向您展示如何将TextView添加到ViewGroup
LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD lp =
new LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD
(LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT,
LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT);
lp.gravity = Gravity.Right;
lp.weight = 1f;
//And so on
TextView tv = new TextView(Context);
tv.setLayoutParams(lp);
LAYOUT_HOLDING_THE_VIEW.add(tv);
//NOTES:
//Sometimes the program may not update these changes, so just to be safe, you can go ahead and call this method:
LAYOUT_HOLDING_THE_VIEW.invalidate(); once you are done adding these fields.
所以大部分时间都应该这样做;
答案 1 :(得分:0)
检查以下代码,哪个工作正常。
final LinearLayout _layout = (LinearLayout) findViewById(R.id.totalview);
final LayoutInflater inflator = LayoutInflater.from(this);
Button b = (Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
LinearLayout v = (LinearLayout)inflator.inflate(R.layout.add_view, null);
_layout.addView(v,0);
}
});