안드로이드에서 가장 기본적으로 사용되는 텍스트뷰, 버튼, 에디트텍스트를 보자.
XML로 화면을 구성한 후 Java코드로 동작하는 기법을 익히자.
1. 텍스트뷰
텍스트뷰는 View 클래스 바로 다음에 위치하며 다양한 위젯이 그 하위에 존재한다.
텍스트뷰의 하위(에디트텍스트, 버튼,체크박스 등)는 모두 텍스트뷰로부터 상속받기 때문에 텍스트뷰의 속성을 잘 이해한다면 다른 위젯의 속성도 이해하기 쉬울 것이다.
text 속성
텍스트뷰에 나타나는 문자열을 표현한다. '문자열' 형식으로 값을 직접 입력하거나 "@string/변수명" 형식으로 설정한 후 strings.xml 파일에 지정할 수 있다.
[Tip]
안드로이드 메뉴얼에서는 activity_main_xml 파일에 문자열을 직접 입력하는 것보다 "@string/변수명" 형식의 사용을 권장한다. 이는 strings.xml의 내용만 수정하면 다른 언어로도 쉽게 변환할 수 있기 때문이다.
textColor 속성
글자의 색상을 지정하며, background 속성처럼 같은 #RRGGBB나 #AARRGGBB 형식이다.
textSize 속성
글자의 크기를 dp,px,in,mm,sp 단위로 지정한다.
typeface 속성
글자의 글꼴을 지정한다. 값으로 sans,serif,monospace를 설정할 수 있고 default는 normal이다.
textStyle 속성
글자의 스타일을 지정한다. 값으로 bold, italic, bold|italic을 설정할 수 있고 default는 normal이다.
singleLine 속성
글이 길어 줄이 넘어갈 경우 강제로 한 줄까지만 출력하고 문자열의 맨 뒤에 '...'를 표시한다. 값으로 true와 false를 설정할 수 있고 디폴트는 false이다.
[Tip]
이 외에도 글자와 관련된 속성으로 textAllCaps, textAppearance, textColorHighlight, textColorHint, textColorLink, textlsSelectable, textScaleX 등이 있는데 활용도는 그닥 높지는 않다.
위 속성들을 다음 예제를 통해 살펴보자.
2. Java 코드로 XML 속성 설정
XML 속성은 View 클래스와 TextView 클래스에서 배운 것으로도 충분히 활용가능하다. 배우지 않은 것들도 거의 비슷한 형식이므로 쉽게 응용 가능하다. 다음 예에서는 activity_main.xml 파일에 지정한 xml 속성을 Java 코드에서 설정하는 법이다.
기본적인 텍스트뷰만 만들어 놓고 id 속성과 text만 설정한 XML 파일은 다음과 같다.
xml에서는 다음과 같이 처리해주고, Java 코드를 설정하여 화면에 적용해주자.
[Tip]
XML 속성과 메소드는 많은 위젯에서 거의 동일한 방식으로 활용된다.
3. 버튼과 에디트텍스트
버튼과 에디트텍스트는 사용자에게서 어떤 값을 입력받기 위한 가장 기본적인 위젯으로 활용도가 높다.
두 위젯은 View 클래스와 TextView 클래스를 상속받으므로 거의 비슷하게 사용할 수 있다.
먼저, 간단한 텍스트뷰를 예로 살펴보면 다음과 같다.
위 텍스트뷰를 버튼으로 변경하려면 'TextView'를 'Button'으로만 바꾸면 된다.
필요시 TextView의 하위 클래스인 EditText, RadioButton, CheckBox, ToggleButton 등으로 바꾼다.
버튼
버튼에서는 버튼을 클릭하는 이벤트를 가장 많이 사용한다. 일반적인 버튼의 XML 코드는 다음과 같다.
이 버튼을 클릭했을 때 동작하는 Java 코드를 세 단계로 작성해준다.
1. 버튼 변수 선언
Button mybutton;
2. 변수에 버튼 위젯 대입
mybutton=(Button) findViewById(R.id.button1);
3. 버튼을 클릭할 때 동작하는 클래스 정의
mybutton.setOnClickListener(new View.OnclickListener(){
publick void onClick(View v){
// 동작 내용을 이 부분에 코딩
}
});
위 세 단계는 대부분의 위젯(라디오버튼, 이미지버튼, 체크박스, 토글버튼 등)에서 거의 동일하게 사용되므로 통째로 외우는 것이 좋다.
에디트텍스트
에디트텍스트는 값을 입력받은 후 해당 값을 Java 코드에서 가져와 사용하는 용도로 많이 쓰인다.
Java 코드에서 에디트텍스트에 값을 입력하는 경우도 종종 있다. 일반적인 에디트텍스트의 XML 코드는 다음과 같다.
에디트텍스트도 변수를 선언하고 이 변수에 해당 아이디 값을 넣은 후에 접근한다. 다음과 같은 형식을 많이 사용한다.
1. 에디트텍스트 변수 선언
EditText myEdit;
2. 변수에 에디트텍스트 위젯 대입
myEdit=(EditText) findViewById(R.id.edittext1);
3. 에디트텍스트에 입력된 값 가져오기->주로 버튼 클릭 이벤트 리스너 안에 삽입
String myStr=myEdit.getText().toString();
getText() 메소드는 에디트텍스트에 입력한 값을 반환하는데, 이를 문자열로 바꾸기 위해 toString()을 함께 사용했다.
반환값을 문자열로 변경할 때 가장 많이 사용하는 방식이므로 잘 기억해두자.
초간단 계산기 앱 만들기
package com.example.a20160922;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private EditText editText1;
private TextView textView;
public class MyListener implements View.OnClickListener {
@Override
public void onClick(View v) {
int a = Integer.parseInt(editText.getText().toString());
int b = Integer.parseInt(editText1.getText().toString());
double result = 0;
if (v.getId() == R.id.buttonAdd)
result = a + b;
else if (v.getId() == R.id.buttonSub)
result = a - b;
else if (v.getId() == R.id.buttonMul)
result = a * b;
else
result = (double)a / (double)b;
textView.setText("계산 결과: " + result);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText1);
editText1 = findViewById(R.id.editText);
Button buttonAdd = findViewById(R.id.buttonAdd);
Button buttonSub = findViewById(R.id.buttonSub);
Button buttonMul = findViewById(R.id.buttonMul);
Button buttonDiv = findViewById(R.id.buttonDiv);textView = findViewById(R.id.textView);
MyListener listener = new MyListener();
buttonAdd.setOnClickListener(listener);
buttonSub.setOnClickListener(listener);
buttonMul.setOnClickListener(listener);
buttonDiv.setOnClickListener(listener);
}
}
'Computer engineering > Android Programming' 카테고리의 다른 글
안드로이드 Toolbar 없이 Toolbar만들기 (0) | 2022.06.14 |
---|---|
RecyclerView & GirdLayout Decoration Customizing & Caution (0) | 2022.06.13 |
레이아웃 개요 (0) | 2021.04.24 |
기본위젯 활용하기 (0) | 2021.04.24 |
기본 위젯 익히기 (0) | 2021.03.22 |