ภาพรวม
ตัวอย่างนี้สาธิตวิธีการสร้างและเพิ่มปุ่ม (Button) เข้าไปใน Layout แบบไดนามิกโดยใช้โค้ด Java โดยจัดเรียงเป็นแถวและคอลัมน์ (3 แถว 4 คอลัมน์)
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
สร้างโปรเจกต์ Android ใหม่ใน Android Studio
ขั้นตอนที่ 2: จัดทำ Layout พื้นฐาน (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context=".MainActivity"
android:orientation="vertical">
</LinearLayout>
ขั้นตอนที่ 3: เขียนโค้ด MainActivity.java
package app.com.sample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
for (int i = 0; i < 3; i++) {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 4; j++) {
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT));
btnTag.setText("Button " + (j + 1 + (i * 4)));
btnTag.setId(j + 1 + (i * 4));
row.addView(btnTag);
}
layout.addView(row);
}
setContentView(layout);
}
}
ขั้นตอนที่ 4: AndroidManifest.xml
Manifest มาตรฐาน ไม่ต้องเพิ่มสิทธิ์พิเศษ
แนวคิดสำคัญ
- ใช้ LinearLayout ซ้อนกัน: แนวตั้งสำหรับแถว แนวนอนสำหรับปุ่มในแต่ละแถว
- ลูป for ซ้อนกัน สร้าง 3 แถว × 4 ปุ่ม = 12 ปุ่ม
- setId() ให้แต่ละปุ่มเพื่อระบุตัวตน
- setContentView(layout) แทน layout XML เดิม
การทดสอบ
รันแอป จะเห็นกริดปุ่ม 3x4 ปรากฏบนหน้าจอ