2013-06-30 93 views
1

我的應用程序有edittext和一個按鈕。每次我點擊一個按鈕,一個新的textview被添加到活動。下面是代碼:在java中設置textview XML

public void novVnos (View v){ 
    EditText eText = (EditText) findViewById(R.id.editText1); 
    RelativeLayout mLayout = (RelativeLayout) findViewById(R.id.relativeLayout); 

    mLayout.addView(createNewTextView(eText.getText().toString())); 
} 

private TextView createNewTextView (String text){ 
    final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    final TextView textView = new TextView(this); 
    int counter = 0; 

    counter += 1; 
    textView.setLayoutParams(lparams); 
    textView.setText(counter + ". " + text); 
    return textView; 
} 

現在的事情是,每當我使用按鈕添加一個新的TextView,它會自動放置在活動的左上角,但我想它在其他地方。我已經(手動)爲此活動添加了新的文本視圖,並且希望每個新的文本視圖都自動放置在已存在的此文本視圖下。

回答

3

我不確定你是否真的需要有一個RelativeLayout,我強烈建議使用LinearLayout來代替,並將方向設置爲vertical,這將使所有視圖都被添加到彼此之下。

如果你真的需要有一個RelativeLayout,當然也有一種方法。但是你必須指定正確的LayoutParams。每個默認視圖組都有它自己的LayoutParams類。 使用RelativeLayout.LayoutParams - 尤其是方法addRule(RelativeLayout.BELOW, idOfOtherView) - 您可以讓視圖位於另一個視圖的下方。

+0

是的,這就是我所說的思考:) – H4F

+1

謝謝!奇蹟般有效! – Guy

1

在XML上使用垂直方向的LinearLayout,並且不使用RelativeLayout。