Android/Java สร้าง Button แบบ programmatically

ไฟล์ที่เกี่ยวข้อง

  • activity_main.xml
  • MainActivity.java

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    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"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/layoutMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package com.phaisarn.myapplication;

import androidx.appcompat.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);

        Button button = new Button(this);
        button.setText("Click Me!");

        LinearLayout layoutMain = findViewById(R.id.layoutMain);
        layoutMain.addView(button);
    }
}

ปรับแต่ง Button ด้วย LayoutParams

สร้างตัวแปรชนิด LayoutParams เสร็จแล้วกำหนดค่าให้กับ Button

package com.phaisarn.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
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);

        Button button = new Button(this);
        button.setText("Click Me!");
        button.setGravity(Gravity.CENTER_HORIZONTAL);
        button.setTextSize(18f);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        button.setLayoutParams(params);

        LinearLayout layoutMain = findViewById(R.id.layoutMain);
        layoutMain.addView(button);
    }
}

บรรทัดที่ 23 สร้างตัวแปรชนิด LayoutParams ชื่อ params

บรรทัดที่ 26 กำหนดค่า params ให้กับ Button

กำหนด All Caps ให้ Button

  • button1 เป็นบังคับให้เป็นตัวพิมพ์ใหญ่ เป็นค่า default ของ button
  • button2 กำหนดใน XML ให้ textAllCaps="false"
  • button3 กำหนดให้ AllCaps เป็น true ด้วย code (บังคับให้เป็นตัวพิมพ์ใหญ่)
  • button4 กำหนดให้ AllCaps เป็น false ด้วย code

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="All Caps - Default Way" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="All Caps Off - XML Way"
        android:textAllCaps="false" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="All Caps On Programmatically" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="All Caps Off Programmatically" />

</LinearLayout>

บรรทัดที่ 6 กำหนดให้วิวอยู่กึ่งกลาง android:gravity="center"

บรรทัดที่ 21 กำหนดให้ AllCaps เป็น false ด้วย android:textAllCaps="false"

MainActivity.java

package com.phaisarn.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        Button button3 = findViewById(R.id.button3);
        Button button4 = findViewById(R.id.button4);

        button3.setAllCaps(true);
        button4.setAllCaps(false);
    }
}