繁体   English   中英

如何在RelativeLayout中正确对齐?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM