상세 컨텐츠

본문 제목

[안드로이드]텍스트뷰(TextView) 동적생성

안드로이드

by aries574 2020. 6. 24. 19:21

본문


이번시간에는 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다.

미리 필요한 텍스트뷰를 만들어서 사용할 수도 있지만, 상황에 따라서 동적으로 생성이 필요할 수도있습니다


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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="120dp"
android:orientation="horizontal">

<Button
android:id="@+id/createTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="텍스트뷰 동적생성"/>
</LinearLayout>

<LinearLayout
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#9DCFFF"
android:orientation="horizontal"
/>
</LinearLayout>


2. MainActivity.java

버튼을 클릭하면 createTextView()라는 이름의 메소드를 호출합니다.

만들어 놓은 createTextView()메소드안에는 텍스트뷰를 동적으로 생성해주는 소스가

들어 있습니다. 설명을 달아 놓았으니 읽어보시면서 따라 해보시면 됩니다.

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

LinearLayout listView; //레이아웃 객체 생성
Button createTextView; //버튼 객체 생성

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

listView = findViewById(R.id.listView);

createTextView = findViewById(R.id.createTextView);
createTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

createTextView();
}
});
}

/**
* 텍스트뷰 생성
*/
private void createTextView(){

//1. 텍스트뷰 객체생성
TextView textViewNm = new TextView(getApplicationContext());

//2. 텍스트뷰에 들어갈 문자설정
textViewNm.setText("텍스트 생성");

//3. 텍스트뷰 글자크기 설정
textViewNm.setTextSize(12);//텍스트 크기

//4. 텍스트뷰 글자타입 설정
textViewNm.setTypeface(null, Typeface.BOLD);

//5. 텍스트뷰 ID설정
textViewNm.setId(0);

//6. 레이아웃 설정
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT
,LinearLayout.LayoutParams.WRAP_CONTENT);
param.leftMargin = 30;

// 7. 설정한 레이아웃 텍스트뷰에 적용
textViewNm.setLayoutParams(param);

//8. 텍스트뷰 백그라운드색상 설정
textViewNm.setBackgroundColor(Color.rgb(184,236,184));

//9. 생성및 설정된 텍스트뷰 레이아웃에 적용
listView.addView(textViewNm);
}
}


3. 실행화면



반응형

관련글 더보기

댓글 영역