在RelativeLayout中运行时对齐视图

3
我如何在运行时在相对布局中添加视图,使其自动对齐到父视图的顶部。比如我点击一个按钮然后添加一个EditText,这个EditText应该出现在按钮上面。
以下是示例代码:
    button = new Button(this);  //here I am just checking if the button can come above the EditText
    button.setText("I am a button");  
    params.addRule(RelativeLayout.BELOW, editText.getId());  
    params.addRule(RelativeLayout.ALIGN_PARENT_ABOVE);  
    relativeLayout.addView(button);  

我完全无法对齐。 非常感谢任何提示。 提前致谢。

2个回答

6

您需要使用RelativeLayout.addView的重载方法,其将您的LayoutParams作为第二个参数传递。

    button = new Button(this);  //here I am just checking if the button can come above the EditText
    button.setText("I am a button");  
    params.addRule(RelativeLayout.BELOW, editText.getId());  
    params.addRule(RelativeLayout.ALIGN_PARENT_ABOVE);  
    relativeLayout.addView(button, params);

addView method


我将addView参数编辑为relativeLayout.addView(button, params); 但是我看到的是,如果我使用ALIGN_PARENT_BOTTOM,它不会出现在editText下方,而是移到屏幕底部。 - Shaista Naaz
如果我按顺序为所有视图设置了ids,那么它们会按照我想要的顺序出现在下面,但是另一个奇怪的问题出现了,尽管我使用了 WRAP_CONTENT 参数,但它却显示为 FILL_PARENT。我的意思是按钮占据了整个屏幕的长度。 - Shaista Naaz
如果我使用params.addRule(RelativeLayout.ALIGN_PARENT_LEFT),它就能正常工作。 感谢您的帮助。 :) - Shaista Naaz

1
不要把它搞得太复杂。
相反,
步骤1:在添加按钮的地方添加一个垂直方向的线性布局。
步骤2:首先添加EditText并将其可见性设置为GONE。
步骤3:添加您的按钮。
步骤4:单击按钮时,只需使您的按钮可见即可。
这一定会起作用,而且很容易实现。
希望能帮到您 :)

你的想法听起来不错,但我的需求是这样的:当用户点击“添加更多”按钮时,屏幕上会添加一些内容并且按钮会下移。每次用户点击时都会添加内容,就像将联系人添加到应用程序中一样。因此,我不能真正使用这个想法,因为它全部是运行时的,我无法猜测这个按钮会被点击多少次。但是,感谢您的建议。 - Shaista Naaz
是的,你说得很对。如果大小和内容数量不固定,则必须仅使用代码添加它。但对于简单情况,例如仅将文本编辑到按钮上,这将更加有效。希望这个东西会在其他情况下对你有所帮助 :) - Rohit Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接