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

activity에서 layout내 커스텀레이아웃 접근...

0 추천
public class ImageBlock extends LinearLayout {

 Context context;
 public ImageBlock(Context context, AttributeSet attrs) {
 super(context, attrs);
 this.context = context;
 LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 inflater.inflate(R.layout.image_block, this, true);
 }
}

안녕하세요ㅠㅠ고민하다 질문올려봅니다.. 초보라 하나하나 다 어렵네요... 마감일은 다가오는데 ㅠㅠ

 image_block.xml은 단순히 RelativeLayout으로 액자이미지 뒤에  이미지를 넣는 식으로 구성되어있구요,

여기에 위처럼 inflater 써서 main.xml에 <com.list.ImageBlock>...</com.list.ImageBlock>로 3개 삽입했는데요,

이 com.list.ImageBlock 속의 액자뒤 이미지에 MainActivity.java에서 접근해서 이미지를 3개가

서로 다른 이미지가 들어가게  변경하는 방법이 있을까요?

아니면 아예 MainActivity에서 imageBlock자체를 addView하는 방법도 생각해봤는데 널포인터에러가 나네요 ㅠㅠ

ABCing (270 포인트) 님이 2013년 4월 13일 질문
ABCing님이 2013년 4월 13일 수정

2개의 답변

0 추천
일단은....자답입니다.

일단 ImageBlock1st, ImageBlock2nd, ImageBlock3rd로 각각 따로 설정해서 포함시키는 방법을 썼습니다..

나중에 포함되어야 하는 갯수가 2~4개로 변동될수 있는데 그때는 gone을 써야할지... 고민이네요.

혹시 addview나 다른 방법 좋은 방법이 있다면 알려주시면 감사하겠습니다.

감사합니다!
ABCing (270 포인트) 님이 2013년 4월 13일 답변
0 추천
원하는 작업이 xml로 imageblock을 만들고 activity에서 이를 컨트롤 하고싶다는거죠?

findViewById로 custom view 안의 imageview 하나만 찾아도 되고

위처럼 imageblock 커스텀클래스로 짜셨다면 차라리 onDraw를 상속받아 안에서 자기자신을 그리기전에 액자를 그리는 방법도 있고요

 

방법은 무궁무진하고 더 긴 답변이 될수있었는데 실수로 뒤로가기키를 눌러서...;;
URA (300 포인트) 님이 2013년 4월 13일 답변
답변 감사합니다!
뒤로가기 ㅠㅠㅠㅠㅠㅠ 아깝고 아쉬워요 ㅠㅠㅠ

1.
"onDraw를 상속받아 안에서 자기자신을 그리기전에 액자를 그리는 방법"이 뭔지 잘 이해가 안가네요...

2.
findViewById로 custom view 안의 imageview 찾는거는 3개 block에 각각 이미지를 다르게 지정하는 방법을 모르겠어서요 ㅠㅠ 예를 들어 아래처럼은 안되겠지만 main.xml 각 imageblock 3개에 id를 block1st, block2nd, block3rd로 주고
block1st.img.setImageDrawable(~~);
block2nd.img.setImageDrawable(~~);
block3rd.img.setImageDrawable(~~);
한다던가 하는 방법이 있나 해서 질문 올렸습니다~
imageblock.xml자체에 id를 넣으면 3개가
이미지가 같이 변해서요 ㅠㅠ

음 극단?적으로 예를 들면, 이 QnA를 펼친채로 리스트로 만들고 앱에서 본다고 하면, 이 틀은 유지하되 컨텐츠는 서버에서(혹은 웹에서) 받아와 뿌리게 될텐데 이 틀을 유지한채 내용을 변경하는 방법이... 궁금하다는 의미였습니다. 혹시 아신다면...부탁드릴게요 감사합니다!!!
...