2011-11-16 2 views
1

단추를 누른 후에 단추를 만들려고합니다 (이 단추는 XML로 미리 작성되었습니다). 사실, LinearLayout에서 이것을 할 수 있지만, 내 buttoncreator 메소드가 실행될 때마다 RelativeLayout으로 전환하면 이전에 생성 된 버튼이 삭제되고 새 버튼이 만들어집니다.RelativeLayout Button Creation

; 내 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는 임의의 한계를 설정하는 방법이다).

내가 만든 메서드를 호출 장소

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에이 개 버튼을 만드는 것입니다 만 1. (실제로, 그 다음 첫 번째를 만들고 그것을 삭제하고, 두 번째 것).

제가 RelativeLayouts에 대해 이해할 수없는 부분이 있습니다. 내가 뭘 잘못하고있는 걸까요?

미리 Thumbnail

답변

0

내가 원하는 것을하기위한 해결 방법을 제안 할 수 있습니다. xml 파일에 버튼을 만들고 onCreate()의 표시 여부를 View.GONE으로 설정하고 버튼의 onClick에서 표시 유형을 View.VISIBLE으로 설정하십시오. 나는 이것이 당신이 원하는 것을 할 것이라고 생각하고 당신이 RelativeLayout에 문제가 있다고 생각하지 않습니다.

+0

빠른 답변을 보내 주셔서 감사합니다. 그러나 이러한 버튼은 코드 목적에 따라 사전 정의되지 않아야합니다. 이것은 LinearLayout에서 간단히 작동합니다. Relativelayout에서 왜 이렇게 작동합니까? – Ozan

+0

사실 두 버튼을 모두 만들고있는 것이 틀림 없습니다. RelativeLayout을 사용하는 것은'layout_below/layout_above' 매개 변수를 설정하여 뷰를 정렬해야한다는 것입니다. 그렇게하지 않으면, 그들은 같은 위치에 머물러있게됩니다. 그래서 그것이 두 번째 버튼 만 생성하는 것이라고 생각합니다. 첫 번째 텍스트를''gdvasjdhaskdhajdhasj'와 같이 더 길게 설정하면 두 번째 버튼 아래에 표시됩니다. –

+0

완료, 예전에 시도했는데 그 말이 맞습니다. 코드를 수정하면 돌아올거야. 고마워. – Ozan