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 .... 
} 
});

}

You may also like...