2012-04-13 4 views
0

프로그래밍 방식으로 화면에 단추를 추가하고 API을 구문 분석하여 값을 가져오고 이제 배열의 길이에 따라 단추를 표시하려고합니다. 나는이 일을하고 있지만 마지막 버튼 만 표시되지만, for 루프에서는 모든 값이 정확하지만 마지막 버튼 만 표시됩니다. 당신은 buttom의 상단이 항목의 좌우 추가 할 수 있습니다 x와 Android.you의 y 값을주지해야한다프로그래밍 방식으로 동적 단추 표시

RelativeLayout relate; 

//... 
relate = (RelativeLayout)findViewById(R.id.relative); 

     protected void onPostExecute(Void result) { 
     if(dialog.isShowing() == true) { 
     dialog.dismiss(); 
    } 

    //int width = 100, height =50, x = 10, y = 20; 

    for (int i =0;i<adapt_obj.city_name_array.length;i++){ 
     b1 = new Button(myref); 

     b1.setText(adapt_obj.city_name_array[i]); 

    relate.addView(b1); 


    //relate.addView(b1, i, new RelativeLayout.LayoutParams(width,height)); 

    //height = height+80; 

    } 

    listlocation.setAdapter(adapt_obj); 
    adapt_obj.notifyDataSetChanged(); 
    } 

답변

2

RelativeLayout은 일부 게재 위치 규칙을 지정하지 않으면 상단 모서리에 추가 한보기를 쌓을 것입니다. 단추가 레이아웃에 추가되지만 서로의 위에 배치되므로 마지막으로 추가 한 단추 만 볼 수 있습니다.

RelativeLayout relate; relate = (RelativeLayout)findViewById(R.id.relative); 
for (int i = 0; i < adapt_obj.city_name_array.length; i++){ 
    Button b1 = new Button(myref); 
    b1.setId(100 + i); 
    b1.setText(adapt_obj.city_name_array[i]); 
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    if (i > 0) { 
     lp.addRule(RelativeLayout.BELOW, b1.getId() - 1); 
    } 
    b1.setLayoutParams(lp); 
    relate.addView(b1); 
} 
+0

덕분에 많이 U 회신 해 드리겠습니다, 아주 많이 근무 U 감사 : 여기 for 루프의 일부 수정은 – Ved

0

: 이것은 내 코드입니다. 또한 레이아웃 매개 변수에는 wrap_content 또는 fill_parent를 사용해야합니다.

Button button = new Button(this); 
    button.setText(@"text"); 
    button.setLayoutParams(new LayoutParams(WRAP_CONTENT,WRAP_CONTENT)); 
    layout.addView(button); 
0

나는이 문제가 상대적인 레이아웃에 있다고 생각한다. 버튼이 서로 쌓일 수 있습니다. 부모를 선형 레이아웃으로 만들어보십시오.

+0

0K 저하자 곧 – Ved

관련 문제