android中的动态UI:如何在正确的位置添加文本字段和编辑文本?

时间:2012-03-17 07:59:58

标签: android user-interface

我希望创建一个UI,最初有一个按钮,当点击它时,会在屏幕顶部添加一个TextView和EditText(放在一个单独的XML文件中进行充气),而按钮则移到EditText上。再次单击该按钮会在之前的按钮下方添加另一个TextView和EditText,然后按钮再次移动到下方(有点像我们通过按下绿色的“+”图标向android中的联系人添加新号码)。

我已经能够从程序中膨胀TextView和EditView,但是所有视图的位置都不正确:我得到TextView和EditText,但单击时按钮会消失。我会很感激一些示例代码,它们展示了如何做我所描述的内容。

2 个答案:

答案 0 :(得分:0)

这基本上与LayoutParams有一些乐趣。

为了使它更容易,您应该继续创建几个与xclipse布局的eclipse视觉开发区域类似的项目。这将有助于您更好地了解制作特定外观所需的属性。

考虑到这些属性,您可以继续将它们转换为动态添加它的代码。

这基本上是基本方法: 1.转到您的xml布局并添加一些文本字段和/或编辑文本到您喜欢的首选项,就像您是手机一样,并且用户正在按动态添加这些视图所需的按钮。

  1. 查看您调整后的属性以获得特定外观

  2. 这是所有这些的基本编码方法:

  3. 在这里,我将向您展示如何将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);
            }
        });