[英]How to align in RelativeLayout properly?
嗨,我正在尝试以编程方式设计一个布局,在其中我有一个textview和一个edittext以及一个按钮。 两行。 TextView的第一行。 第二行带有Edittext和按钮。 Edittext应该从左延伸到按钮。 现在,Textview出现在第一行中,但是第二行(带有Edittext和Button)被弄乱了。 现在,EditText并没有一直扩展到发送按钮。 我尝试使用Wrap_Content,Fill_parent,Match_Parent,但没有运气。 这是我到目前为止的内容:
RelativeLayout layout = new RelativeLayout(this);
EditText myText = new EditText(this);
Button myBtn = new Button(this);
parameters_layout = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
myText.setId(1);
myText.setLayoutParams(parameters_layout);
layout.addView(myText,parameters_layout);
parameters_layout = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
parameters_layout.addRule(RelativeLayout.RIGHT_OF, myText.getId());
myBtn.setLayoutParams(parameters_layout);
layout.addView(myBtn,parameters_layout);
谢谢您的帮助,不胜感激。
编辑:澄清我知道
parameters_layout = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
可以用数字代替。 例如:
parameters_layout = new
RelativeLayout.LayoutParams(350,
RelativeLayout.LayoutParams.WRAP_CONTENT);
那是350个像素,dp,sp吗? 它是什么?
我了解的是您要实现的是屏幕右下角的一个Button和按钮左侧的一个扩展EditText。 我对么?
如果那样,请尝试此。 我在我的银河系关系中测试了此代码,并且效果很好。
RelativeLayout layout = new RelativeLayout(this);
EditText myText = new EditText(this);
Button myBtn = new Button(this);
myBtn.setId(1);
RelativeLayout.LayoutParams parameters_layout = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
parameters_layout.addRule(RelativeLayout.LEFT_OF, myBtn.getId());
myText.setLayoutParams(parameters_layout);
layout.addView(myText,parameters_layout);
parameters_layout = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
myBtn.setLayoutParams(parameters_layout);
layout.addView(myBtn,parameters_layout);
一个技巧是,当您使用RelativeLayout时,首先找到位置固定的视图(在您的情况下为右下角按钮),然后使用特定于布局的相对参数找到其他视图。 (在您的情况下为LEFT_OF)。
另一个提示是,只要您需要以编程方式分配ID值,就不要分配任何特定值(在您的情况下为'1'),而是可以将ID定义为资源,然后不使用任何值来使用它担心ID冲突或某些奇怪的行为。
有一个有关ID资源的文档,请检查一下-http://developer.android.com/guide/topics/resources/more-resources.html#Id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.