2011-11-16 112 views
1

我試圖創建按鈕後,我按下按鈕(這是一個預先製作的XML)。 事情是,我可以在LinearLayout中執行此操作,但是當我每次切換到RelativeLayout時,我的buttoncreator方法都會運行它,刪除以前創建的按鈕並創建一個新的按鈕。RelativeLayout按鈕創建

更具特色; 我buttoncreator方法

public void buttoncreator(String name,RelativeLayout.LayoutParams position,RelativeLayout layout){ 



    positionrandomer(position); 
    final Button dummybutton = new Button(this); 
    dummybutton.setText(name); 

      //these are here for test,it works but still i have the same problem 

    position.addRule(RelativeLayout.BELOW,R.id.button1); 
    position.addRule(RelativeLayout.BELOW,R.id.button2); 

    dummybutton.setLayoutParams(position); 

     layout.addView(dummybutton); 
     return; 

}  

(位置randomer是它設置隨機邊距的方法)。

其中i調用創建器方法的地方

Button luckbutton = (Button) findViewById(R.id.button1); 

       luckbutton.setOnClickListener(new Button.OnClickListener(){ 

          public void onClick(View arg0) { 
           name="Blue"; 
       buttoncreator(name,position,layout); 
       name="Blu4e"; 
       buttoncreator(name,position,layout); 





                  } 
                      });  

所以,我打算在1個buttonclick創建2個按鈕,但是它僅創建1.(實際上,它創建的第一個然後將其刪除,並創建第二個 )。

Appereantly有一些我不明白RelativeLayouts, 我做錯了什麼?

THX提前

回答

0

我可以建議你一種解決方法做你想要的東西。爲什麼不在xml文件中創建按鈕並在onCreate()View.GONE之間設置其可見性,並在按鈕的onClick中將其可見性設置爲View.VISIBLE。我認爲這會做你想做的事情,我認爲你不會遇到RelativeLayout的問題。

+0

感謝您的快速回答,但是由於代碼的目的,這些按鈕必須是非預定義的:/。 這在LinearLayout中非常有用,爲什麼它在Relativelayout中以這種方式運行? – Ozan

+0

其實我很確定這是創建兩個按鈕。與RelativeLayout的事情是,你必須設置'layout_below/layout_above' params來對齊視圖。如果你不這樣做,他們將被卡在相同的位置,這就是爲什麼你認爲它只創建第二個按鈕。嘗試將您的第一個文本設置爲更長的文本,例如:'gdvasjdhaskdhajdhasj',您將看到它將保留在第二個按鈕下。 –

+0

完成,是的,我已經嘗試過,你說得對。當我修復代碼時,我會回來。非常感謝。 – Ozan