2017-04-12 154 views
0

我想在基於舊的,我已經通過XML創建的java代碼中創建一個新的編輯文本。我想這種新的編輯文本出現的老編輯文本的圖像視圖,這我也用XML創建及以下的右手邊,我用的RelativeLayout此:如何在android中以編程方式使用Relative Layout創建編輯文本?

private void createEditText(){ 
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
      editText.getLayoutParams().width, 
      editText.getLayoutParams().height); 
    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    layoutParams.addRule(RelativeLayout.RIGHT_OF, editText.getId()); 
    layoutParams.addRule(RelativeLayout.BELOW, imageView.getId()); 
    final EditText newEditText = new EditText(this); 
    newEditText.setBackgroundResource(R.drawable.rounded_edittext); 
    newEditText.setLayoutParams(layoutParams); 

    relativeLayout.addView(newEditText); 
} 

但新編輯文本出現在屏幕的頂部,忽略了我在代碼中使用的addRule函數。這裏是RealtiveLayout:

<RelativeLayout 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:gravity="center" /> 

我在做什麼錯了?在java代碼或XML文件中是否有錯誤?

+0

我不確定,但嘗試在'addView'後面調用'setLayoutParams' –

回答

0

您需要爲newEditText設置一個索引。 默認值爲-1,這意味着它會在其他視圖之前添加。 你可以得到relativeLayout.getChildCount(); 的孩子數量,因爲count是孩子的數量,所以也是加入newEditText的正確索引。

private void createEditText(){ 
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
     editText.getLayoutParams().width, 
     editText.getLayoutParams().height); 
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
layoutParams.addRule(RelativeLayout.RIGHT_OF, editText.getId()); 
layoutParams.addRule(RelativeLayout.BELOW, imageView.getId()); 
final EditText newEditText = new EditText(this); 
newEditText.setBackgroundResource(R.drawable.rounded_edittext); 

relativeLayout.addView(newEditText,relativeLayout.getChildCount(),layoutParams); 
} 

因爲你做記住newEditText最後記住,你不能用這個方法超過一次,每次多你啓動應用程序。

相關問題