activity_main.xml
<LinearLayout
android:id="@+id/linerLayout"
android:orientation="vertical"
android:layout_width="300dp"
android:layout_height="398dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
</LinearLayout>
MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val linerLayout = findViewById<LinearLayout>(R.id.linerLayout)
var childLayout:LinearLayout? = null
// 버튼 초기값 8개
var btnCount = 8
for(i in 0 until btnCount){
// 한줄에 버튼 3개식 배치
if(i % 3 == 0) {
childLayout = LinearLayout(this)
childLayout.orientation = LinearLayout.HORIZONTAL
// 버튼들이 한줄에 꽉차도록, 버튼 높이는 100
val layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 100)
childLayout.layoutParams = layoutParams
}
// 버튼 폭, 넓이 맞춰주기
// layout을 만드는 부분
val btnParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)
btnParams.weight = 1.0f
// Button클래스, this는 MainActivity 현재 클래스에 적용할 것이라는것
// 동적버튼 할당
val normalBtn = Button(this).apply {
// 버튼의 타이틀
text = (i + 1).toString()
layoutParams = btnParams
id = i
setOnClickListener {
val myToast = Toast.makeText(this.context, "${id + 1}번 버튼 클릭!", Toast.LENGTH_SHORT)
myToast.show()
}
}
childLayout?.addView(normalBtn)
// 버튼이 3개 미만으로 남을 경우 폭에 맞춰서 추가!
if(i % 3 == 2 || i == (btnCount - 1)){
linerLayout.addView(childLayout)
}
}
}
}
'안드로이드' 카테고리의 다른 글
[Android] Geocoding (0) | 2022.04.03 |
---|---|
[안드로이드] Camera (0) | 2022.04.03 |
[Android] SQLite (0) | 2022.04.02 |
[Android] Singleton (0) | 2022.03.31 |
[Android] Preferences (0) | 2022.03.31 |
댓글