2012-05-04 3 views
1

TextViews 버튼 to my code **inside** the code itself like, dynamically adding them inside aloop. My problem is setting the layout_gravity`을 둘 다 추가하고 고유 ID를 가져와야합니다. 코드에서 ID를 추가하는 방법이 있습니까?코드 안드로이드 TextViews 및 버튼 설정

UPDATE 내가 R.id 폴더로 얻을 수있는 TextViewsButtons의 ID가 필요

은, 심지어 가능하다?

+0

중복 : [안드로이드 : 프로그래밍 두 개의 텍스트 뷰를 추가] (HTTP : // 유래 당신은 당신의 새로운보기 라에 그 PARAMS을 LayoutParams 객체에 그 값을 추가하고 설정해야합니다 .com/questions /3210599/android-add-two-text-views-programmatically) – Sam

+0

업데이트 : 리소스 폴더에있는 경우 동적으로 생성되지 않습니다. 그들은 이미 존재합니다 ... – Sam

+0

ListView를 사용하십시오 ... – Selvin

답변

2
// sets button properties 
    btn = new ImageButton(this); 
    btn.setId(id); 
    btn.setTag(Image_Name); 

    btn.setBackgroundColor(Color.TRANSPARENT); 
    btn.setAdjustViewBounds(true); 

    btn.setImageBitmap(bmp); 

    btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

     // Implement Click Listener 

     } 
    }); 

이러한 구성 요소는 모두 가능합니다.

+0

btn.setId (id)의 "id"필드는 무엇입니까? – arielschon12

+0

내 R.id 폴더에 ID를 어떻게 설정합니까? – arielschon12

+0

그것의 당신의 선택 id는 루프 iterate에서 증가 될 어떤 것이 될 수 있습니다. –

2

아니요, 런타임에 여전히 R.id의 나머지 부분과 관련하여 고유 한 것으로 간주되는 ID를 생성 할 수 없습니다.

  1. 값으로 동적 뷰의 ID를 설정 0 같은 : 당신은 당신이 setId() 방법을 사용하여 자바 코드에서 원하는 값으로 뷰의 ID를 설정할 수 있습니다, 그러나, 여기 당신이 고려해 볼 수 있습니다 무엇에 대한 몇 가지 옵션이 있습니다 1, 2, 3 또는 심지어 100, 101, 102, 103 등. R.id에 의해 생성 된 값은 항상 0x7F로 시작하므로 충돌 할 값을 선택하는 것은 거의 불가능합니다.
  2. 보기의 해시 코드 인 la view.setId(view.hashCode())을 사용하여보다 고유 한 ID를 생성하십시오. 자녀가 ID를 가지고 있지 않을 때 RadioGroup이하는 일입니다.
  3. 미리보기에 첨부되지 않은 R.id 값은 res/values/ids.xml (see SDK article)을 생성하여 생성 할 수 있습니다. 그런 다음 런타임에 view.setId(R.id.xxx)을 추가 할 수 있습니다. XML에 layout_ 접두사 값이 실제 뷰의 LayoutParams하지 속성이기 때문에

은 지금까지 당신의 layout_gravity 문제로, 이것은 아마도입니다.

Button button; 
LinearLayout layout; 
LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
lp.gravity = Gravity.CENTER; 

//Option #1 to add 
layout.addView(button, lp); 

//Option #2 to add 
button.setLayoutParams(lp); 
layout.addView(button); 

HTH