Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Hướng dẫn sử dụng CheckedTextView trong Android

CheckedTextView là gì?

CheckedTextView kế thừa từ TextView và triển khai interface Checkable. Nó cho phép hiển thị văn bản kèm theo trạng thái checked/unchecked (có dấu tích hoặc không), thường dùng trong ListView với chế độ chọn đa mục (CHOICE_MODE_MULTIPLE).

Các bước thực hiện

Bước 1: Tạo dự án mới

Android Studio → File → New Project → Empty Activity.

Bước 2: Layout với CheckedTextView (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <CheckedTextView
        android:id="@+id/checkedTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Checked Text View - Nhấn vào tôi"
        android:textSize="22sp"
        android:padding="16dp"
        android:checkMark="?android:attr/listChoiceIndicatorMultiple"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Thuộc tính android:checkMark dùng drawable hệ thống cho dấu tích. Có thể thay bằng drawable tùy chỉnh.

Bước 3: Xử lý sự kiện click (MainActivity.java)

package com.example.checkedtextviewexample;

import android.os.Bundle;
import android.view.View;
import android.widget.CheckedTextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private CheckedTextView checkedTextView;

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

        checkedTextView = findViewById(R.id.checkedTextView);
        
        // Ẩn check mark mặc định, tự xử lý khi click
        checkedTextView.setCheckMarkDrawable(null);
        
        checkedTextView.setOnClickListener(v -> {
            // Toggle trạng thái checked
            checkedTextView.toggle();
            
            // Hoặc set drawable tùy ý khi checked
            if (checkedTextView.isChecked()) {
                checkedTextView.setCheckMarkDrawable(R.drawable.ic_check_circle_green_24dp);
            } else {
                checkedTextView.setCheckMarkDrawable(null);
            }
        });
    }
}

Cách dùng phổ biến hơn: Trong ListView

CheckedTextView thường dùng trong ListView với setChoiceMode(ListView.CHOICE_MODE_MULTIPLE):

ListView listView = findViewById(R.id.listView);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(new ArrayAdapter<>(this, 
    android.R.layout.simple_list_item_multiple_choice, dataArray));

Layout simple_list_item_multiple_choice đã chứa CheckedTextView sẵn, Android tự xử lý trạng thái check khi click item.

Kết quả

Ban đầu không có dấu tích. Khi người dùng click vào text, dấu tích xuất hiện. Click lần nữa thì biến mất.

Hướng dẫn sử dụng CheckedTextView trong Android

Hướng dẫn sử dụng CheckedTextView trong Android

Trái: Chưa check. Phải: Đã check (có dấu tích xanh).

Lưu ý

  • CheckedTextView phù hợp cho danh sách chọn nhiều mục
  • Có thể tùy chỉnh checkMark bằng bất kỳ drawable nào (vector, PNG, shape)
  • Sử dụng toggle() để đảo trạng thái, setChecked(boolean) để set trực tiếp