728x90
반응형
실습 5-2(테이블레이아웃 계산기 앱)
![]() |
![]() |
AVD 화면 |
<xml 코드>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/Ed1"
android:hint="숫자1 입력"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/Ed2"
android:hint="숫자2 입력"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="*">
<TableRow>
<Button
android:id="@+id/Btn0"
android:layout_margin="1dp"
android:text="0" />
<Button
android:id="@+id/Btn1"
android:layout_margin="1dp"
android:text="1" />
<Button
android:id="@+id/Btn2"
android:layout_margin="1dp"
android:text="2" />
<Button
android:id="@+id/Btn3"
android:layout_margin="1dp"
android:text="3" />
<Button
android:id="@+id/Btn4"
android:layout_margin="1dp"
android:text="4" />
</TableRow>
<TableRow>
<Button
android:id="@+id/Btn5"
android:layout_margin="1dp"
android:text="5" />
<Button
android:id="@+id/Btn6"
android:layout_margin="1dp"
android:text="6" />
<Button
android:id="@+id/Btn7"
android:layout_margin="1dp"
android:text="7" />
<Button
android:id="@+id/Btn8"
android:layout_margin="1dp"
android:text="8" />
<Button
android:id="@+id/Btn9"
android:layout_margin="1dp"
android:text="9" />
</TableRow>
<TableRow>
<Button
android:id="@+id/Add"
android:layout_margin="5dp"
android:text="더하기"
android:layout_span="5"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/Sub"
android:layout_margin="5dp"
android:text="빼기"
android:layout_span="5"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/Mul"
android:layout_margin="5dp"
android:text="곱하기"
android:layout_span="5"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/Div"
android:layout_margin="5dp"
android:text="나누기"
android:layout_span="5"/>
</TableRow>
<TextView
android:layout_margin="5dp"
android:id="@+id/TResult"
android:text="계산 결과:"
android:textSize="20dp"
android:textColor="#FF0000"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</TableLayout>
</LinearLayout>
<java 코드> - 배열.. 다시 공부 필요
package com.cookandroid.practice5_2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText ed1, ed2;
Button add, sub, mul, div;
TextView Tresult;
String num1, num2;
Integer result;
Button[] numButtons = new Button[10];
Integer[] numBtnIDs = {R.id.Btn0, R.id.Btn1, R.id.Btn2, R.id.Btn3, R.id.Btn4,
R.id.Btn5, R.id.Btn6, R.id.Btn7, R.id.Btn8, R.id.Btn9};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("테이블레이아웃 계산기");
ed1 = findViewById(R.id.Ed1);
ed2 = findViewById(R.id.Ed2);
add = findViewById(R.id.Add);
sub = findViewById(R.id.Sub);
mul = findViewById(R.id.Mul);
div = findViewById(R.id.Div);
Tresult = findViewById(R.id.TResult);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = ed1.getText().toString();
num2 = ed2.getText().toString();
result = Integer.parseInt(num1)+ Integer.parseInt(num2);
Tresult.setText("계산 결과 : " + result.toString());
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = ed1.getText().toString();
num2 = ed2.getText().toString();
result = Integer.parseInt(num1) - Integer.parseInt(num2);
Tresult.setText("계산 결과 : " + result.toString());
}
});
mul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = ed1.getText().toString();
num2 = ed2.getText().toString();
result = Integer.parseInt(num1) * Integer.parseInt(num2);
Tresult.setText("계산 결과 : " + result.toString());
}
});
div.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = ed1.getText().toString();
num2 = ed2.getText().toString();
result = Integer.parseInt(num1) / Integer.parseInt(num2);
Tresult.setText("계산 결과 : " + result.toString());
}
});
for(int i=0; i<numBtnIDs.length; i++) {
numButtons[i] = findViewById(numBtnIDs[i]);
}
for(int i=0; i<numBtnIDs.length; i++) {
final int index;
index = i;
numButtons[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(ed1.isFocused()) {
num1 = ed1.getText().toString() + numButtons[index].getText().toString();
ed1.setText(num1);
} else if (ed2.isFocused()) {
num2 = ed2.getText().toString() + numButtons[index].getText().toString();
ed2.setText(num2);
} else {
Toast.makeText(getApplicationContext(), "먼저 에디트텍스트를 선택하세요", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
직접 풀어보기 5-5
<xml 코드> - 만 달라짐. java코드 동일.
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="5"
android:rowCount="9">
<EditText
android:layout_column="0"
android:layout_row="0"
android:id="@+id/Ed1"
android:hint="숫자1 입력"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"/>
<EditText
android:layout_column="0"
android:layout_row="1"
android:id="@+id/Ed2"
android:hint="숫자2 입력"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"/>
<Button
android:layout_column="0"
android:layout_row="2"
android:layout_width="80dp"
android:id="@+id/Btn0"
android:text="0" />
<Button
android:layout_column="1"
android:layout_row="2"
android:layout_width="80dp"
android:id="@+id/Btn1"
android:text="1" />
<Button
android:layout_column="2"
android:layout_row="2"
android:layout_width="80dp"
android:id="@+id/Btn2"
android:text="2" />
<Button
android:layout_column="3"
android:layout_row="2"
android:layout_width="80dp"
android:id="@+id/Btn3"
android:text="3" />
<Button
android:layout_column="4"
android:layout_row="2"
android:layout_width="80dp"
android:id="@+id/Btn4"
android:text="4" />
<Button
android:layout_column="0"
android:layout_row="3"
android:layout_width="80dp"
android:id="@+id/Btn5"
android:text="5" />
<Button
android:layout_column="1"
android:layout_row="3"
android:layout_width="80dp"
android:id="@+id/Btn6"
android:text="6" />
<Button
android:layout_column="2"
android:layout_row="3"
android:layout_width="80dp"
android:id="@+id/Btn7"
android:text="7" />
<Button
android:layout_column="3"
android:layout_row="3"
android:layout_width="80dp"
android:id="@+id/Btn8"
android:text="8" />
<Button
android:layout_column="4"
android:layout_row="3"
android:layout_width="80dp"
android:id="@+id/Btn9"
android:text="9" />
<Button
android:layout_width="match_parent"
android:layout_row="4"
android:layout_column="0"
android:layout_columnSpan="5"
android:id="@+id/Add"
android:layout_margin="5dp"
android:text="더하기"/>
<Button
android:layout_width="match_parent"
android:layout_row="5"
android:layout_column="0"
android:layout_columnSpan="5"
android:id="@+id/Sub"
android:layout_margin="5dp"
android:text="빼기"
android:layout_span="5"/>
<Button
android:layout_width="match_parent"
android:layout_row="6"
android:layout_column="0"
android:layout_columnSpan="5"
android:id="@+id/Mul"
android:layout_margin="5dp"
android:text="곱하기"
android:layout_span="5"/>
<Button
android:layout_width="match_parent"
android:layout_row="7"
android:layout_column="0"
android:layout_columnSpan="5"
android:id="@+id/Div"
android:layout_margin="5dp"
android:text="나누기"
android:layout_span="5"/>
<TextView
android:layout_width="match_parent"
android:layout_row="8"
android:layout_column="0"
android:layout_columnSpan="5"
android:layout_margin="5dp"
android:id="@+id/TResult"
android:text="계산 결과:"
android:textSize="20dp"
android:textColor="#FF0000"
android:layout_height="wrap_content"/>
</GridLayout>
▶ 반복해서 난항을 겪었던 부분 : 셀들이 자꾸 창 밖을 벗어남.
(그리드레이아웃 짤림, 테이블레이아웃 짤림... 등)
- 테이블 레이아웃: android:shrinkColumns="*" 추가
- 그리드 레이아웃: layout_width:80dp 로 크기 지정해줌.
'모바일 > android' 카테고리의 다른 글
[안드로이드프로그래밍6판] 6장 자동완성 텍스트뷰(고대로 베껴 봄) (0) | 2021.10.17 |
---|---|
[안드로이드프로그래밍6판] 6장 실습 6-1, 직접 풀어보기 6-1 (0) | 2021.10.17 |
[안드로이드프로그래밍6판] 5장 직접 풀어보기 5-4 (0) | 2021.10.16 |
[안드로이드프로그래밍6판] 5장 직접 풀어보기 5-2, 실습 5-1 (0) | 2021.10.16 |
[안드로이드프로그래밍6판] 4장 연습 문제 7, 8 (0) | 2021.10.16 |