텍스트뷰 (TextView)
프로젝트를 처음 만들었을 때부터 화면 레이아웃 안에는 텍스트뷰가 들어 있습니다.
텍스트뷰는 화면에 글자를 표시하도록 해줍니다.
텍스트뷰에 글자를 표시할 때는 text 속성에 직접 글자를 넣어줄 수도 있지만 /res/values 폴더 안에 들어있는 strings.xml 파일 안에 넣어둔 태그의 값으로 설정할 수도 있습니다.
다음과 같이 name 속성의 값을 strings.xml 파일 안에 넣어줍니다.
<resources>
<string name="name">John</string>
</resources>
그러면 텍스트뷰의 text 속성 값으로 @string/name 을 넣어줄 수 있습니다.
이 방식은 다국어를 설정할 때도 유용합니다.
만약 /res/values-en 폴더와 /res/values-ko 폴더를 만들고 그 안에 strings.xml 파일을 같이 넣어주었다면 @string/name 으로 참조하는 글자는 단말의 로케일(Locale)에 따라 달라집니다.
단말이 한국어로 설정되어 있다면 /res/values-ko/strings.xml 파일 안에 들어있는 name 태그의 값을 가져오는 것이죠.
텍스트뷰에는 text속성과 함께 textColor, textSize, textStyle 속성도 많이 사용됩니다.
버튼 (Button)
버튼은 텍스트뷰를 상속하여 만들어졌기 때문에 XML 레이아웃에 들어있는 태그의 이름을 TextView에서 Button으로 바꾸기만 해도 버튼이 화면에 보이게 됩니다.
즉, 버튼은 텍스트뷰의 속성을 모두 가지고 있으면서 추가적인 기능이나 속성을 더 가지고 있습니다.
버튼은 다시 라디오버튼(RadioButton)이나 체크박스(CheckBox) 등으로 나누어 사용될 수 있습니다.
그중에서 라디오버튼은 라디오그룹(RadioGroup)을 이용해 하나의 그룹으로 묶어줄 수 있습니다.
남자와 여자를 선택하는 라디오버튼을 화면에 넣고 싶다면 다음과 같이 그룹으로 묶어줍니다.
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="남자" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="여자" />
</RadioGroup>
에디트텍스트 (EditText)
에디트텍스트는 입력상자의 역할을 합니다.
사용자가 입력한 글자를 받고 처리하는 기능을 제공하므로 상당히 많이 사용됩니다.
이 위젯에서 많이 사용되는 속성으로 inputType을 들 수 있습니다.
inputType은 어떤 유형의 글자를 입력할 지를 결정하는 속성으로 이 속성을 어떤 값으로 설정했는가에 따라 키패드의 형태가 달라집니다.
hint 속성을 설정하면 글자를 입력하지 않았을 때 희미하게 보이는 안내글을 표시해줍니다.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="아이디" />
이미지뷰 (ImageView)
이미지뷰는 이미지를 보여줍니다.
프로젝트의 res 폴더 안에는 drawable 폴더가 들어있는데 이 폴더 안에 이미지 파일을 넣고 이미지뷰에 설정할 수 있습니다.
Drawable 폴더에 이미지를 넣을 때 이미지 파일의 이름은 소문자와 특수기호 중 언더스코어(_)만 넣을 수 있다는 점에 주의해야 합니다. 이미지 파일의 확장자는 jpg, png, gif 등이 가능하며 그중에서 png 형식의 이미지를 권장합니다.
예를 들어, drawable에 넣은 이미지 파일의 이름이 house.png라면 다음과 같이 src 속성으로 설정할 수 있습니다.
android:src="@drawable/house"
scaleType 속성은 이미지가 이미지뷰가 가지는 영역을 꽉 채울 것인지 아니면 이미지 원본의 크기대로 보여줄 것인지 등을 결정하는 데 사용됩니다. 직접 scaleType 속성의 값을 이것저것 바꾸어가면서 화면에 보이는 결과를 확인해보세요.
생각해보기
- 다른 사람들이 Play스토어에 올려놓은 앱의 화면에서 볼 수 있는 버튼이나 텍스트뷰에는 얼마나 많은 속성이
설정되어 있을까요? - 버튼의 background 속성을 이용해 배경으로 이미지를 설정하면 이미지뷰의 src 속성을 이용해
이미지를 보여주었을 때와 다른 점이 있을까요? - 원본 이미지의 해상도가 각각 다른 여러 이미지를 하나의 이미지뷰에 번갈아 가면서 보여주려 할 때
이미지뷰의 scaleType 을 어떻게 설정해야 제대로 보여줄 수 있을까요?
참고 자료
comment
수강완료.
수강완료.
1. 설정된 속성수는 설정된 위젯수에 비례하게 설정될것으로 보이며, 기본속성 3 전후, 옵션 속성 3 전후, 관계속성 1~4 , 내용 속성 2 전후 정도 해서 위젯 수 * 9~13 전후정도가 되지 않을까요
2. 그림자와 반응액션의 차이를 뺀다면 가시적인 부분에서는 크게 다를 부분이 없다고 생각합니다.
3. 영상에 나오지 않은 내용이어서 밑의 댓글을 참고했습니다. fitCenter가 적당하다고 하네요
1.다른 것들이 텍스트 뷰를 상속받기 때문에 그렇게 많지 않을 것 같다.
2.배경화면에 글이 써져 있어서 더 조화로울 것 같다.
3.아직 잘 모르겠어서 생각해 봐야겠다.
다른 사람들이 Play스토어에 올려놓은 앱의 화면에서 볼 수 있는 버튼이나 텍스트뷰에는 얼마나 많은 속성이 설정되어 있을까요?
-기본적인 폰트, 색깔부터 시작해서 엄청나게 많은 속성이 적용되어 있을 것 같습니다.
버튼의 background 속성을 이용해 배경으로 이미지를 설정하면 이미지뷰의 src 속성을 이용해 이미지를 보여주었을 때와 다른 점이 있을까요?
- 일단 배운것 만으로 생각해봤을 때, src 속성을 이용해서 이미지를 보여주면 이미지 자체 공간을 가지고 있어 조절이 가능 하지만 background를 사용하면 그것을 만드는 공간의 뒷배경을 사용하게 되므로 공간에 한계가 생기게 됩니다.
원본 이미지의 해상도가 각각 다른 여러 이미지를 하나의 이미지뷰에 번갈아 가면서 보여주려 할 때 이미지뷰의 scaleType 을 어떻게 설정해야 제대로 보여줄 수 있을까요?
- match parent를 사용하여 화면을 채우고, 각각 이미지뷰를 한개씩 보여줘야하기 때문에 한개의 이미지를 보여줄때는 나머지 이미지의 visibiliy를 gone으로 설정해줘야 합니다.
1. 사람들의 편의를 위해서 오히려 많은 속성들은 거부감이 들 것 같다. 실제로 사용하는 어플을 봐도 기본적인 속성들만 설정되있는 것 같다.
2. 큰 변화를 모르겠다. 단지, 버튼에는 text 속성이 기본으로 되어 있어 이미지 위에 text 내용이 출력된다.
3. fitXY를 이용한다.
⭐️생각해보기⭐️
1. 해당 버튼, 텍스트 뷰의 용도, 위치에 따라 설정되어있는 속성이 다를 것 같습니다.
2. 버튼 속성의 유뮤의 차이점이 생길 것 같습니다. 예를 들면 터치했을 때 효과나 액션, 그리고 이미지가 보여지는 형태에서차이가 있을 것 같아요.
3. fitCenter 로 이미지 비율은 유지하면서 ImageView안에 꽉 차게 들어갈 수 있게 할 수 있을 것 같습니다.
비공개 글입니다.
설정되어 있을까요?>attribute에 따라 다르고 앱의 기능 등에 따라 다르겠지만 많을 것 같습니다
이미지를 보여주었을 때와 다른 점이 있을까요?>같을 것 같아요
이미지뷰의 scaleType 을 어떻게 설정해야 제대로 보여줄 수 있을까요?>나와 있는 dp,px의 크기를 참조하여 보면 될 것 같아요
생각해보기
1. 앱에 따라 다를 것 같습니다. 예시보다는 많겠지만 CSS처럼 중복되는 속성을 한 번에 주는 방법이 존재할 것 같고, 그에 따라 Contraint와 같은 설정만 하는 뷰도 있을 것 같습니다.
2. 기본적으로 같아보입니다만, 크기를 변경했을 때, 버튼의 경우는 그림의 형태가 망가지더라도 꽉찬 화면으로 보이고, 이미지의 경우는 가로와 세로중 더 작은 곳에 맞추고 다른 쪽은 가운데 정렬을 합니다.
3. fitCenter가 가장 적절하다고 생각합니다. 각각의 이미지가 이미지 뷰 크기보다 클 때는 적절하게 줄여주고, 반대의 경우는 늘려주며 이미지 자체의 비율을 헤치지 않기 때문입니다.
생각해보기
1. 버튼 하나에도 속성이 50여가지가 넘어가는데, 어림잡기 어려울만큼 많은 수의 속성이 설정되어 있을 것 같습니다.
2. 시도해 보았는데, 솔직히 아직 차이점을 잘 모르겠습니다. 버튼의 background에 이미지를 설정하면 버튼의 text가 보이는 것 정도일까요...?
3. fit이 '들어맞다'라는 뜻이 있으니까, fitXY 타입으로 설정하면 사진의 X축, Y축이 ImageView에 들어맞게 들어갈 것 같습니다.