1

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

4

1 回答 1

0

我的理解是您想要实现的是屏幕右下角的一个 Button 和按钮左侧的一个扩展 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 定义为资源,然后在没有任何内容的情况下使用它担心身份冲突或一些奇怪的行为。

有一个关于 ID 资源的文档,所以检查一下 - http://developer.android.com/guide/topics/resources/more-resources.html#Id

于 2013-08-26T01:52:31.013 回答