안드로이드 기본 위젯과 토스트(Toast)

Dora·2020년 10월 6일
0

Chap4. 안드로이드 인터페이스 기초01 - 뷰(View)

TextView (문자열 표시 위젯)

XML 상에서 직접 값 지정

<TextView
	android:text="hello!" />

다른 XML값 읽어와 값 지정

<TextView
	android:text="@string/hello_world"  />
//string폴더에 id가 hello_world인 text를 읽어오겠다.

//string.xml
<String id="hello_world">hello!</String>
  • 언어별 맞춤 가능
  • 유지보수 편리

JAVA 코드로 직접

TextView textView1 = (TextView)findViewById(R.id.hello_world);
textView1.setText("hello!");

//findViewById()로 레이아웃에 배치한 위젯을 객체로 가져온 후 수행

  • 동작 도중에 내용을 바꿀 때 편리

ScrollView + TextView

: 내용이 많아 한 화면에 TextView의 내용을 표시할 수 없을 때.

ScrollView는 XML Design창에서
[Palette - Containers] or [Palette - Common] 에 있다.

ScrollView안에 TextView를 넣어주면 된다.
(Layout 내 드래그하거나 Component Tree를 이용)


  • 예시
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String msg = "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n" +
                "Hello World!!!!!!!!!!!!\n";

        TextView textView = findViewById(R.id.textView);
        textView.setText(msg);
    }
}

//activity_main.xml

<ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="45sp" />
        </LinearLayout>
    </ScrollView>

TextView ⊂ LinearLayout ⊂ ScrollView 형태

(적용된 예시 이미지는 밑에 있음)


ImageView

  • 주요속성
    • src : 출력할 이미지의 id (ex. @drawable/target_id)
    • maxHeight / maxWidth
    • adjustViewBounds : 종횡비 유지 여부
    • cropToPadding : 여백 조정 여부
    • tint : 색조 추가
    • scaleType : 확대/축소 방식 지정
  • 이미지 파일 설정 주의사항
    • 투명도 조정을 위해 png파일 권장
    • 파일명이 id로 자동지정되므로 명명규칙 준수 (소문자, 밑줄, 숫자만)
    • 확장자로 구분되지 않기 때문에 파일명이 겹치면 곤란
  • mipmap 폴더
    앱에서 고정적으로 사용할 간단한 이미지를 저장하고 동일한 이미지를 해상도에 따라 달리하여 각 폴더에 저장함. (ex. icon)
  • 예시
  1. directory창을 Android모드가 아닌 Project모드로 바꾼다.

  2. [app - src - drawable]에서 우클릭으로 [Show in Explorer]를 눌러 뜬 창에 이미지 파일을 복사해서 옮긴다.
    //이렇게 안해도 되긴함. 괜히 파일 경로 꼬일까봐..

  3. ImageView 코드 창에서 밑에 코드 추가.

android:src="@drawble/(파일명)"

으악 디자인 창에서 볼 때랑 다르게 사진이 가득 차버렸다.
사진 크기 조절을 위해 layout_width와 layout_height를 논리단위로 수정해 주었다. (원래 wrap_content였음)
//궁금한게 있는데 사진 크기 조절이 이게 최선인지 모르겠다.

원하는대로 이미지 넣기 성공!


Button

: 사용자 클릭 이벤트 처리.

  • 주요 속성

    • text : 버튼에 표시할 문자열

    • onClick : 버튼을 클릭하였을 때 동작할 메소드명 기입.

    • onClick Method 구현 (자바 코드로)
      : public void 메소드명 (View 변수) { ... } 형태
      ex. public void onClick (View v) { ... }

EditText

: 사용자 키보드 입출력 처리

  • 주요 속성
    - text
    - hint : 입력할 텍스트 안내, 입력 시 사라짐
    - inputType : 입력할 값의 유형 (ex. 일반/암호/숫자/전화번호 등 타입에 따라 키보드를 자동으로 설정해줌)

  • 값 처리 (자바 코드임)
  1. XML상의 EditText객체를 찾아 자바 객체로 저장하는 경우
EditText editText = (EditText)findViewById(R.id.editText);
  1. EditText 객체 메소드인 getText()를 사용하여 입력된 값을 가져오는 경우
    (CharSequence반환)
String text = editText1.getText().toString();	//문자열일 경우
int num = Integer.valueof(myEdit.getText().toString());	//숫자일 경우
+) 문자열을 정수로 전환 : Integer.parseInt(text)
  1. EditText 객체 메소드인 setText()하여 문자열을 표시하는 경우
editText1.setText("문자열");

Toast

: 화면 하단에 일정 시간 동안 나타나는 안내용 출력창

//경우1 (긴코드)
Toast myToast = Toast.makeText(this, "Hello", Toast.LENGTH_SHORT);
myToast.show();

//경우2 (짧은코드)
Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
  • 추가로 설정가능한 것
myToast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
myToast.setMargin(float, float);
myToast.setView(View view);
  • 구성
    Toast.makeText(Context, 출력할 값, 출력 시간 ).show();

*Context? https://developer.android.com/reference/android/content/Context
//컨택스트의 개념은 잘 와닿지 않는다. 음.. 추상클래스라고 해야하나.
나중에 교수님한테 여쭤봐야지.

profile
Lv.1 개발자

0개의 댓글