簡體   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