[안드로이드/Android] 스피너(Spinner) 값을 이용한 레이아웃 예제Framework/Android2021. 5. 18. 06:01
Table of Contents
반응형
안녕하세요!
이번 시간에 실습해 볼 것은 안드로이드에서 스피너(Spinner)로 간단히
레이아웃이나 기타 컴포넌트를 다루는 예제입니다.
array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="max_size">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="스피너로 레이아웃 다루기"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Spinner
android:id="@+id/spinnerExample"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/max_size"
android:layout_weight="1"/>
<Button
android:id="@+id/spinnerExampleBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="입력"
android:textSize="20dp"
android:layout_weight="2"/>
</LinearLayout>
</LinearLayout>
MainActivity.java
package com.example.spinnerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
public class MainActivity extends AppCompatActivity {
Integer spinnerNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinnerExample = (Spinner) findViewById(R.id.spinnerExample); //spinner
Button spinnerExampleBtn = (Button) findViewById(R.id.spinnerExampleBtn); //button
spinnerExampleBtn.setOnClickListener(new View.OnClickListener() { //click event
@Override
public void onClick(View v) {
spinnerNum = Integer.parseInt(spinnerExample.getSelectedItem().toString()); //item->int
Intent intent = new Intent(MainActivity.this, SubActivity.class);
intent.putExtra("spinnerNum", spinnerNum); //data (mainactivity -> subactivity)
startActivity(intent);
}
});
}
}
activity_sub.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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SubActivity"
android:orientation="vertical">
<LinearLayout
android:id="@+id/LayoutEample1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:background="@color/purple_200"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/LayoutEample2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:background="@color/teal_700"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/LayoutEample3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:background="@color/purple_700"
android:visibility="gone"/>
</LinearLayout>
SubActivity.java
package com.example.spinnerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
public class SubActivity extends AppCompatActivity {
Integer result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
LinearLayout linearLayout_1 = (LinearLayout) findViewById(R.id.LayoutEample1); //linearlayout
LinearLayout linearLayout_2 = (LinearLayout) findViewById(R.id.LayoutEample2);
LinearLayout linearLayout_3 = (LinearLayout) findViewById(R.id.LayoutEample3);
LinearLayout[] linearLayouts = {linearLayout_1, linearLayout_2, linearLayout_3}; //linearlayout array
Intent intent = getIntent();
result = intent.getIntExtra("spinnerNum", 0); //get data
for(int i=0; i<result; i++) {
linearLayouts[i].setVisibility(View.VISIBLE);
}
}
}
코드를 짧게 설명하면 array.xml에 필요한 사이즈만큼의 아이템을 만든 후에
xml에서 스피너와 버튼을 이용해서 스피너의 아이템 값을
서브 액티비티로 넘겨 주고 받아 스피너 아이템 값만큼의 레이아웃을 보이게 끔 만드는 것입니다.
스피너로 입력한 값에 따라 달라 보이게 되는거죠
스피너만 사용해도 괜찮지만 사용자 입력 오류를 줄여주기 위해 버튼과 같이 사용했습니다.
이것을 응용해서 최댓값이 존재한다면 여러 가지 예제들을 만들 수 있습니다.
이번 시간에는 오랜만에 안드로이드로 진행했는데 스피너로 간단히 컴포넌트를 다루는 실습이었습니다.
고생하셨습니다!
반응형
'Framework > Android' 카테고리의 다른 글
[안드로이드/Android] Fragment 프래그먼트, FrameLayout 프레임 레이아웃 예제(화면 일부만 전환하기), Fragment 프 (0) | 2021.03.29 |
---|---|
[안드로이드/Android] 안드로이드 중단 오류(카톡/카카오톡, 인터넷, 앱) (0) | 2021.03.23 |
[안드로이드/Android] Error launching studio 오류 해결 (0) | 2021.03.18 |
[안드로이드/Android] XAMPP로 개인 웹 서버 구축해 안드로이드-MySQL 연동하기(3) Apache+MariaDB+PHP (5) | 2021.02.24 |
[안드로이드/Android] XAMPP로 개인 웹 서버 구축해 안드로이드-MySQL 연동하기(2) Apache+MariaDB+PHP (2) | 2021.02.24 |
@__Evening :: Good Evening
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!