Learn & Record
Android (연습문제, kotlin 코드로만 화면 구현) 본문
1. 연습문제
package kr.jeongmo.kotlin_code_layout
import android.annotation.SuppressLint
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.*
import java.util.*
import kotlin.collections.MutableList as MutableList
class MainActivity : AppCompatActivity() {
lateinit var editText1 : EditText
lateinit var editText2 : EditText
lateinit var btnAdd : Button
lateinit var btnSub : Button
lateinit var btnMul : Button
lateinit var btnDiv : Button
lateinit var textResult : TextView
lateinit var num1 : String
lateinit var num2 : String
var result: Int? = null
// 숫자 버튼
val btnNums = ArrayList<Button>()
// 버튼의 id 값
var btnIds = arrayOf(R.id.BtnNum0, R.id.BtnNum1, R.id.BtnNum2, R.id.BtnNum3,R.id.BtnNum4,
R.id.BtnNum5,R.id.BtnNum6,R.id.BtnNum7, R.id.BtnNum8, R.id.BtnNum9)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "테이블 레이아웃 계산기"
editText1 = findViewById(R.id.Edit1)
editText2 = findViewById(R.id.Edit2)
btnAdd = findViewById(R.id.BtnAdd)
btnSub = findViewById(R.id.BtnSub)
btnMul = findViewById(R.id.BtnMul)
btnDiv = findViewById(R.id.BtnDiv)
textResult = findViewById(R.id.TextResult)
btnAdd.setOnClickListener {
num1 = editText1.text.toString()
num2 = editText2.text.toString()
result = num1.toInt() + num2.toInt()
textResult.text = "계산결과 : $result"
}
btnSub.setOnClickListener {
num1 = editText1.text.toString()
num2 = editText2.text.toString()
result = num1.toInt() - num2.toInt()
textResult.text = "계산결과 : $result"
}
btnMul.setOnClickListener {
num1 = editText1.text.toString()
num2 = editText2.text.toString()
result = num1.toInt() * num2.toInt()
textResult.text = "계산결과 : $result"
}
btnDiv.setOnClickListener {
num1 = editText1.text.toString()
num2 = editText2.text.toString()
result = num1.toInt() / num2.toInt()
textResult.text = "계산결과 : $result"
}
for (i in btnIds.indices) {
btnNums.add(i, findViewById(btnIds[i]))
// 포커스가 되어있는 에디트 텍스트에 버튼의 숫자를 결합. 문자열 결합
btnNums[i].setOnClickListener {
if (editText1.isFocused) {
num1 = editText1.text.toString() + btnNums[i].text.toString()
editText1.setText(num1)
} else if (editText2.isFocused) {
num2 = editText2.text.toString() + btnNums[i].text.toString()
editText2.setText(num2)
}else {
Toast.makeText(applicationContext, "먼저 에디트텍스트를 선택하세요.", Toast.LENGTH_SHORT).show()
}
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<EditText
android:id="@+id/Edit1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="5dp"
android:hint="숫자 1 입력"/>
</TableRow>
<TableRow>
<EditText
android:id="@+id/Edit2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="5dp"
android:hint="숫자 2 입력"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnNum0"
android:text="0"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum1"
android:text="1"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum2"
android:text="2"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum3"
android:text="3"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum4"
android:text="4"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnNum5"
android:text="5"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum6"
android:text="6"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum7"
android:text="7"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum8"
android:text="8"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/BtnNum9"
android:text="9"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnAdd"
android:text="더하기"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnSub"
android:text="빼기"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnMul"
android:text="곱하기"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnDiv"
android:text="나누기"
android:layout_weight="1"
android:layout_margin="5dp"
/>
</TableRow>
<TableRow>
<TextView
android:id="@+id/TextResult"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_width="wrap_content"
android:text="계산결과 :"
android:textSize="20dp"
android:textColor="#FF0000"
/>
</TableRow>
</TableLayout>

2. kotlin 코드로만 작업
package kr.jeongmo.only_kotlin_code_0422
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main)
val params = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
val baseLayout = LinearLayout(this)
baseLayout.orientation = LinearLayout.VERTICAL
setContentView(baseLayout, params)
val editText01 = EditText(this)
editText01.hint = "여기에 입력하세요"
baseLayout.addView(editText01)
val btn = Button(this)
btn.text = "버튼입니다"
btn.setBackgroundColor(Color.YELLOW)
baseLayout.addView(btn)
val text01 = TextView(this)
text01.text = "텍스트뷰입니다."
text01.setTextColor(Color.MAGENTA)
baseLayout.addView(text01)
btn.setOnClickListener {
text01.text= editText01.text
}
}
}
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)