안드로이드 개발 질문/답변
(글 수 45,052)
렐러티브 레이아웃 실습중인 학생이에요..
@+id/name 은 r.java 에 해당 name 으로 상수값을 추가 하고
@id/name 은 참고하는 거라고 알고 있는데요..
오늘 렐러티브 레이아웃 실습중에 이상한 에러?(아님 지금 공부하는 중이라 제가 잘못이해했을 수도..)를 발견해서 질문드립니다.
1. 제가 원하는 결과 (먼저 textview를 배치하고 바로 옆에 edittext를 배치하는 것입니다. )
(textview) (Edittext)
textview1 : 입력하시오
2. 따라서 xml을 다음과 같이 작성했습니다.
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
3. align 과 위치를 지정
(a) textview의 layout_alingBaseline을 EditText 와 맞춤
(b) EditText 의 layout_toRightOf 를 Textview1 으로 지정
4. 에러
위와 같이 하는 경우 다음과 같은 에러 메시지가 발생합니다.
error: Error: No resource found that matches the given name (at 'layout_alignBaseline' with value '@id/editText1').
분명 r.java 에는 editText1이 저의 되어 있는데도요
5. 설마 하니 해서 소스를 다음과 같이 고쳐봤습니다.
android:layout_alignBaseline="@+id/editText1"
(좀 이상하죠 분명 이 형식(@+id)은 r.java 에 추가 하는 거고 참고하는 것은@id 인데요.. )
6. 5번과 같이 하니 에러가 나지 않습니다. 도대체 어떻게 된걸까요? 그래서 최종 소스는 아래와 같습니다.
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
7. xml 파일 작업 시 GraphicLayout으로 작업하면 전부 참고하는 부분이 아래와 같은 형식으로 정의가 되더군요..
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
8.. 그래서 질문입니다.
1. 분명 r.java 에는 정의 되어있는데.. @id/editText1 으로 하는 경우 왜 참고 하지못하는지
2. Graphic 레이아웃 으로 작업 시 전부 리소스를 참고하는 부분이 왜 @+id/name 으로 지정되는지
9. 위 두가지가 정말 궁금합니다. 꼭 확실한 답변이 아니라도 조그만 힌트라도 알려주시면 정말 감사하겠습니다.
@+id/name 은 r.java 에 해당 name 으로 상수값을 추가 하고
@id/name 은 참고하는 거라고 알고 있는데요..
오늘 렐러티브 레이아웃 실습중에 이상한 에러?(아님 지금 공부하는 중이라 제가 잘못이해했을 수도..)를 발견해서 질문드립니다.
1. 제가 원하는 결과 (먼저 textview를 배치하고 바로 옆에 edittext를 배치하는 것입니다. )
(textview) (Edittext)
textview1 : 입력하시오
2. 따라서 xml을 다음과 같이 작성했습니다.
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
3. align 과 위치를 지정
(a) textview의 layout_alingBaseline을 EditText 와 맞춤
(b) EditText 의 layout_toRightOf 를 Textview1 으로 지정
4. 에러
위와 같이 하는 경우 다음과 같은 에러 메시지가 발생합니다.
error: Error: No resource found that matches the given name (at 'layout_alignBaseline' with value '@id/editText1').
분명 r.java 에는 editText1이 저의 되어 있는데도요
5. 설마 하니 해서 소스를 다음과 같이 고쳐봤습니다.
android:layout_alignBaseline="@+id/editText1"
(좀 이상하죠 분명 이 형식(@+id)은 r.java 에 추가 하는 거고 참고하는 것은@id 인데요.. )
6. 5번과 같이 하니 에러가 나지 않습니다. 도대체 어떻게 된걸까요? 그래서 최종 소스는 아래와 같습니다.
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
7. xml 파일 작업 시 GraphicLayout으로 작업하면 전부 참고하는 부분이 아래와 같은 형식으로 정의가 되더군요..
<TextView android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:text="textview1 :"></TextView>
<EditText android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textView1"
android:focusable="true"
android:text="입력하시오"
android:width="200dp"></EditText>
8.. 그래서 질문입니다.
1. 분명 r.java 에는 정의 되어있는데.. @id/editText1 으로 하는 경우 왜 참고 하지못하는지
2. Graphic 레이아웃 으로 작업 시 전부 리소스를 참고하는 부분이 왜 @+id/name 으로 지정되는지
9. 위 두가지가 정말 궁금합니다. 꼭 확실한 답변이 아니라도 조그만 힌트라도 알려주시면 정말 감사하겠습니다.
2011.03.19 13:05:52
이거 순서는 사람이 보는 순서가 아닙니다. 컴퓨터는 맨윗줄부터 해석해 가는데... 지금까지 해석했던 것에 EditText 가 없으니까 없다고 에러를 내는겁니다. 아래에 있지만 거긴 아직 안갔거든요...
소녀시대가 윤아-수영-효연-유리-태연-제시카-티파니-써니-서현 순으로 줄서있는데 뒤를 돌아보지 않으면 유리가 제시카가 앞에는 없고 뒤에는 어딨는지 모르는거랑 같지요..
앞에서 android:layout_alignBaseline="@id/editText1" 을 통해
EditText를 찾으려고 해도, EditText는 아래줄에 있어서 아직 선언되지 않은 상태이죠.