如何正确对齐RelativeLayout?

时间:2013-08-25 15:35:34

标签: android android-layout

您好我正在尝试以编程方式设计一个布局,其中我有一个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?它是什么?

1 个答案:

答案 0 :(得分:0)

我理解的是你想要实现的是屏幕右下角的一个按钮和按钮左边的一个扩展的EditText。我是对的吗?

如果是这样,试试这个。我在我的galaxy nexus上测试了这段代码,它运行良好。

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定义为资源,然后使用它w / o任何有关身份冲突或某些奇怪行为的担忧。

有关于ID资源的文档,请查看它 - http://developer.android.com/guide/topics/resources/more-resources.html#Id