마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뷰 속성을 복사하는 방법은 없나요???

0 추천

1.

xml로 뷰를 정의 하고

자바 코드로 새로운 뷰를 생성할 때 

xml에서 뷰를 정의 한 내용을 그대로 복사하는 방법은 없나요?

layouParam을 이용해보려고 했는데 않되네요...

xml에서 정의한 TextView
<TextView 
            android:id="@+id/textOption"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#FEE146"
            android:textSize="30dp"
            android:text="가나다라마바사"
            android:singleLine="false"
            android:typeface="serif"
            />
java파일에서 이런 형태로 xml에서 정의 한 뷰를 새롭게 만들어 뷰에 추가 하려 했습니다.
textOption = (TextView) findViewById(R.id.textOption);

        addText = new TextView(this);
        addText.setLayoutParams(textOption.getLayoutParams());
        addText.setText("아자차카타파하");

 

2. 위에 xml에서 정의한 내용을 코드로 해보고 싶은데... 검색하다가 막혀서요... 

   xml에서 정의한 내용을 java코드로만 구현이 되면 좋을 것 같은데요...

 

답변 부탁드림니다.

디너 (730 포인트) 님이 2013년 9월 6일 질문

3개의 답변

0 추천
AttributeSet 이용하세요. 실제로 XML에서 뷰를 생성할때도 이것을 이용합니다.
북이 (3,360 포인트) 님이 2013년 9월 6일 답변
답변 감사드림니다.
AttributeSet  은 찾아 보고는 있는데 아직 이해가 잘 되지 않네요...
xml에서 뷰를 생성하는 목적이 아니고 자바코드로 뷰를 동적으로 생성하는게 목적이였거든요..^^:
0 추천
부분 적인 자답입니다.

2. 번에 대한 내용을 다른분이 블로깅 해두신게 있네요..

http://dark0946.tistory.com/119

보시면 자바코드로 뷰를 생성하는 내용과 예제 프로젝트까지 포함 되어 있네요^^;;
디너 (730 포인트) 님이 2013년 9월 6일 답변
0 추천
1.

textOption 의 param을 addText에 set해주는 부분을

onCreate() 호출되어 layout 구성된 이후 시점에 구현해보세요.

onResume() 내에 구현해도 될 것으로 보입니다만 확실하진 않네요.

onResume()에서도 안된다면 timer나 handler 사용해서 구현하면 될듯합니다.

 

이유는

첫 화면이 구성도 되기전에 불러온 textOption 값은 그냥 아무런 값도 할당되지 않은 단순 포인터값일 뿐입니다.

onCreate()내의 setContentView() 호출되어야 xml 값을 파싱해서 실제 layout을 구현합니다.

 

============

 

만약 TextView가 독립된 용도로 xml 파일을 생성하여 넣어둔 것이라면 inflater를 사용하세요.
그르누이 (180 포인트) 님이 2013년 9월 7일 답변
그르누이님이 2013년 9월 7일 수정
...