[ 실행화면 ]
#1에서 간단한 textView를 xml에 쓴 후 AVD에 띄워보는것까지 했고,
#2에서는 EditText, Button을 하나씩 만들고
MainActivity.java 파일을 조금 건드려 버튼을 클릭하면 EditText에 설정한 text가 들어가도록 했다.
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/et_id"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:hint="아이디를 입력하세요..."/>
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼 텍스트"/>
</LinearLayout>
앞선 강의와 다르게 이번 EditText와 Button에는 id를 부여해주었다.
MainActivity.java 파일에서 이 id를 가져와서 쓰기 위함이다.
width나 height 속성은 대체로 단위를 dp로 주는듯...
2. MainActivity.java
package com.example.android_test;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity {
EditText et_id;
Button btn_test;
@Override
//onCreate -> 어플을 처음 실행했을때 실행됨
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
// Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
// return insets;
// });
et_id = findViewById(R.id.et_id); //et_id 아이디를 가진것과 연결된것
btn_test = findViewById(R.id.btn_test);
//btn_test 아이디를 가진 버튼을 클릭했을때 액션을 취하도록 만들어주기
btn_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//setText = 무슨 값을 써주고 싶을때..
et_id.setText("버튼을 클릭했습니다.");
//즉 버튼을 클릭했을때 et_id id를 가진 EditText에 setText해주기
}
});
}
}
//구문이 끝날때는 세미콜론을 써서 닫아주기
//EditText뒤, Button뒤는 보통 변수이름이 들어가는데 잊어버리지 않도록 xml에서 선언해준 id로..
//EditText나 Button 이 빨갛게 뜬다 -> import가 되지 않았기 때문
//해당 글자 위에 커서를 올리고 alt+enter를 하면 자동으로 import함
onCreate에서 주석 처리한 부분은 강의에서 기본으로 세팅되어 있는 부분과
나의 컴퓨터에서 기본으로 세팅되어 있는 부분이 달라서, 주석처리했다.
여기서 얻어갈 것은 다음과 같다.
- findViewById(R.id.아이디이름)
- 변수이름.setText(텍스트에 넣고 싶은 내용)
- 변수 선언 부분에서 오류가 날 시 글자 위 커서 올린 후 alt+Enter -> import 시켜줌
* 더 자세한 부분은 강의를 들으면서 주석 처리했기 때문에 위 코드 주석 처리 부분 확인
이후 AVD를 실행시키면 대표 이미지처럼 AVD가 실행된다.
버튼을 클릭하면 EditText에 setText되도록 java 코드를 수정시켰으므로 변경되는지 확인하기!
+.. 이전 포스팅에서도 얘기했듯이 새로 설치한 버전에서 타이틀바가 보이지 않았다.
타이틀바를 만들어도 레이아웃이랑 타이틀바가 겹쳐서 내용이 제대로 안보이는 현상까지..
근데 이전 포스팅 해결법처럼 하지 않고 더 간단하게 해결할 수 있었다!
나의 경우 위 사진처럼 themes.xml이 2개 있는데, 일반 모드일때와 다크 모드 2가지 경우의 xml이다.
따라서 두 파일에서 모두 수정을 거쳐줘야하는데,
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Base.Theme.Android_test" parent="Theme.Material3.DayNight.NoActionBar">
</style>
<style name="Theme.Android_test" parent="Base.Theme.Android_test" />
</resources>
이게 기본 코드였다면 여기에서
<style name="Base.Theme.Android_test" parent="Theme.Material3.DayNight"> 로
DayNight 뒤에 있는 NoActionBar 부분을 삭제시켜주면 된다!!
괜히 다른것들 건드리고 추가시켰다가 레이아웃 겹침 현상이 생겼다가 없어졌다가...ㅎㅎ..
지금 참고로 하고 있는 강의는 다음과 같습니다.
http:// youtube.com/watch?v=mlxhD7M8Nsg&list=PLC51MBz7PMyyyR2l4gGBMFMMUfYmBkZxm&index=3
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오] 앱만들기 #6. ListView (0) | 2024.08.27 |
---|---|
[안드로이드 스튜디오] 앱만들기 #5 패키지구조 & 역할 (0) | 2024.08.27 |
[안드로이드 스튜디오] 앱만들기 #4. ImageView, Toast + gravity (0) | 2024.08.27 |
[안드로이드 스튜디오] 앱만들기 #3. Intent (화면 전환) (0) | 2024.08.26 |
[안드로이드 스튜디오] 앱만들기 #1. TextView (0) | 2024.08.26 |