android:id="@+id/StringEE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="StringEE Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Với button trên, khi khởi chạy ứng dụng, chúng ta sẽ nhìn thấy hình ảnh như sau: Lưu ý: màu của button và text sẽ thay đổi mặc định dựa theo theme Material được sử dụng.
Với button trên, khi khởi chạy ứng dụng, chúng ta sẽ nhìn thấy hình ảnh như sau: Lưu ý: màu của button và text sẽ thay đổi mặc định dựa theo theme Material được sử dụng.
Đầu tiên, chúng ta cùng thay đổi màu của text trong button.
Để thay đổi màu text của button, chúng ta có 1 thuộc tính tên là textColor. Set giá trị cho thuộc tính textColor, màu text sẽ thay đổi như màu được set.
Đoạn code sau khi thêm thuộc tính textColor:
android:id=
"@+id/StringEE"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"StringEE Button"
android:textColor=
"@color/stringee_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent" />
Khởi chạy ứng dụng, chúng ta sẽ có 1 button trông như thế này: Tiếp đến, chúng ta sẽ thay đổi màu nền (background) của button.
Để thay đổi màu nền của button, chúng ta sử dụng thuộc tính background.
android:id=
"@+id/StringEE"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"StringEE Button"
android:textColor=
"@color/stringee_color"
android:background=
"@color/stringee_background_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent" />
Kết quả: Ở đây chúng ta thấy, sau khi bị set lại background, hình dạng của button và các khoảng cách so với lề cũng đã thay đổi vì cài đặt mặc định bị thay đổi bởi background mới. Để button có thể đẹp hơn, chúng ta sẽ phải custom thêm ở đây. Tuy nhiên, nếu bạn chỉ muốn thay đổi màu của background mà không làm ảnh hưởng đến các cài đặt khác, thì thay vì sử dụng thuộc tính background, bạn có thể sử dụng thuộc tính backgroundTint
:
android:backgroundTint="@color/stringee_background_color"
Kết quả:
Button mặc định phổ biển nhất trong các version là một button có màu xám và text màu đen. Vậy làm thế nào để có thể thay đổi màu mong muốn cho button.
Trước hết, chúng ta định nghĩa 1 số màu trong file colors.xml để sử dụng
<color name ="stringee_color" > #F5C50A0Acolor >
<color name ="stringee_background_color" > #2196F3color >
<color name ="stringee_start_color" > #2196F3color >
<color name ="stringee_center_color" > #673AB7color >
<color name ="stringee_end_color" > #FF5722color >
Các màu trên sẽ trông như thế này:
Đầu tiên, chúng ta cùng thay đổi màu của text trong button.
Để thay đổi màu text của button, chúng ta có 1 thuộc tính tên là textColor. Set giá trị cho thuộc tính textColor, màu text sẽ thay đổi như màu được set.
Đoạn code sau khi thêm thuộc tính textColor:
"@+id/StringEE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="StringEE Button"
android:textColor="@color/stringee_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Khởi chạy ứng dụng, chúng ta sẽ có 1 button trông như thế này: Tiếp đến, chúng ta sẽ thay đổi màu nền (background) của button.
Để thay đổi màu nền của button, chúng ta sử dụng thuộc tính background.
"@+id/StringEE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="StringEE Button"
android:textColor="@color/stringee_color"
android:background="@color/stringee_background_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Kết quả: Ở đây chúng ta thấy, sau khi bị set lại background, hình dạng của button và các khoảng cách so với lề cũng đã thay đổi vì cài đặt mặc định bị thay đổi bởi background mới. Để button có thể đẹp hơn, chúng ta sẽ phải custom thêm ở đây. Tuy nhiên, nếu bạn chỉ muốn thay đổi màu của background mà không làm ảnh hưởng đến các cài đặt khác, thì thay vì sử dụng thuộc tính background, bạn có thể sử dụng thuộc tính backgroundTint
:
android:backgroundTint="@color/stringee_background_color"
Kết quả:
3. Thay đổi hình dạng button
Trước tiên, để thay đổi hình dạng của 1 button, chúng ta phải có khởi tạo 1 file drawable để sử dụng.
Ví dụ 1 file drawable custom button có hình dạng Oval. File name: stringee_oval.xml
Sau khi đã có drawable, chúng ta sử dụng thuộc tính background để custom cho button:
android:id=
"@+id/StringEE"
android:layout_width=
"200dp"
android:layout_height=
"50dp"
android:text=
"StringEE Button"
android:textColor=
"@color/stringee_color"
android:background=
"@drawable/stringee_oval"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent" />
Kết quả: Với ví dụ về Oval ở trên, tương tự chúng ta có thể thiết lập với các hình dạng khác nhau. Tuy nhiên, lưu ý về kích thước (width, height) của resource và button, hãy đảm bảo giống nhau về giá trị để đầu ra hiển thị chính xác nhất.
4. Tạo độ cong góc cho button
Ở phía trên, chúng ta đã thử thay đổi hình dạng của button. Tuy nhiên, trong 1 vài trường hợp, bạn không muốn thay đổi cả hình dạng mà chỉ muốn thay đổi độ cong của các góc (corners) thì chúng ta cũng có thể làm hoàn toàn tương tự.
Trước tiên, tạo file drawable. Mình sẽ sửa trên file drawable phía trên.
Chúng ta thấy khác nhau lớn nhất ở đây là thay vì set kích thước thì chúng ta sử dụng thuộc tính: corners – thuộc tính set độ cong góc cho button
Kết hợp với code sử dụng file drawable trên:
android:id=
"@+id/StringEE"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"StringEE Button"
android:textColor=
"@color/stringee_color"
android:background=
"@drawable/stringee_oval"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent" />
Kết quả sau khi khởi chạy:
Tổng kết
Trên đây là các cách custom các thuộc tính cơ bản nhất cho 1 button. Ngoài các thuộc tính trên, 1 button có rất nhiều thuộc tính khác có thể thay đổi (width
, height
, padding
,…) tùy theo ý thích và thiết kế. Nếu có thể khai thác, bạn sẽ tạo được dấu ấn cá nhân qua các button của chính mình. Mong rằng bài viết này sẽ đem lại các thông tin hữu ích cho bạn về custom button trong Android.
(còn tiếp)