Android : How to create Button view in Linear layout in Java code
โดยปกติการกำหนดโครงสร้างหน้าจอของแอปปลิเคชัน เราจะกำหนดไว้ที่
<project> -> res -> layout -> {layout file.xml} |
แต่บางทีเราอยากจะมีกระบวนการทางลอจิกเพื่อตรวจสอบ เข้าเงื่อนไขใน Java Code ก่อนค่อยแสดงผล
โครงสร้างที่ต้องการ เช่น สมมติว่าจะเพิ่ม “ปุ่มมาใหม่” (new release button) โดยมีเงื่อนไขในการ
ตรวจสอบก่อนว่า เป็นของใหม่จริงหรือเปล่า ถ้าใช่ก็ค่อยแสดง “ปุ่มมาใหม่” ขึ้นมาให้เห็น ดังนั้นเราจึงจำเป็น
ต้องสร้างปุ่มใน Java code แทนการกำหนดตายตัวใน xml layout
ขั้นตอนการสร้าง Button in Java ( หรืออาจเป็น layout อื่นๆก็ได้ )
1. จองพื้นที่ที่ต้องการให้ Button แสดงผลใน xml layout
example : สมมติว่าเราจะแสดง button ใน layout = activity_main.xml เราก็ไปจับจองพื้นที่โดยสร้าง Linear Layout ไว้ ดังตัวอย่าง
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/Button_New" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:orientation="horizontal"> </LinearLayout> ... </RelativeLayout> |
จากตัวอย่างเราจองพื้นที่ไว้ โดยตั้งชื่อว่า “Button_New” และกำหนดให้ความกว้างเท่าหน้าจอ ส่วนความสูงตามขนาดจริง
2. สร้าง Button in Java
2.1 เราจะอ้างอิงพื้นที่ที่เราจองไว้ในชื่อ “Button_New” ดังนี้
LinearLayout layout = (LinearLayout) findViewById(R.id.Button_New); |
2.2 สร้าง Button ใน Linear Layout
Button buttonNew = new Button(this); buttonNew.setLayoutParams(new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); buttonNew.setText("New Release"); ... |
“…” = หากเราต้องการจะกำหนดคุณสมบัติอื่นๆของ Button เราก็เรียกใช้ buttonAff. อื่นๆได้
setLayoutParams(new ViewGroup.LayoutParams(width,height)) ;
3. แสดงปุ่มให้เห็น (Add Button View)
เราสร้างปุ่มเสร็จแล้วก็พร้อมแสดงผลด้วยการ addView ใน Linear layout ที่เราจองพื้นที่ไว้
layout.addView(buttonNew); |
4. Additional Option
สำหรับปุ่มโดยวัตถุประสงค์เราจะสร้างปุ่มเพื่อคลิ้ก เพราะฉะนั้นเราจะกำหนด Click Listener ด้วย ดังนี้
buttonNew.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ... do anything on clilck button .... } }); |
จากตัวอย่างเพื่อให้เรียกใช้ได้ง่าย เราอาจสร้างเป็น procedure ไว้เรียกใช้ได้ เช่น
public void setButtonNew() { LinearLayout layout = (LinearLayout) findViewById(R.id.Button_New); Button buttonNew = new Button(this); buttonNew.setLayoutParams(new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); buttonNew.setText("New Release"); // add button in linear layout.addView(buttonNew); buttonNew.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ... do anything on clilck button .... } }); } |