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

Cách làm một phần TextView có thể nhấn được trong Android

Giới thiệu

Ví dụ này minh họa cách làm cho một phần văn bản trong TextView có thể nhấn được (clickable) bằng cách sử dụng ClickableSpan và SpannableString.

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

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

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="I want THIS and THIS to be CLICKED!"
        android:layout_centerInParent="true"
        android:textSize="16sp"
        android:textStyle="bold|italic"/>

</RelativeLayout>

Bước 3: Viết code MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    TextView textView;

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

        textView = findViewById(R.id.textView);
        String text = "I want THIS and THIS to be CLICKED";
        SpannableString spannableString = new SpannableString(text);

        // Tạo các ClickableSpan cho từng từ cần thiết
        ClickableSpan clickableSpan1 = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, "THIS (lần 1)", Toast.LENGTH_SHORT).show();
            }
        };

        ClickableSpan clickableSpan2 = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, "THIS (lần 2)", Toast.LENGTH_SHORT).show();
            }
        };

        ClickableSpan clickableSpan3 = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, "CLICKED", Toast.LENGTH_SHORT).show();
            }
        };

        // Áp dụng span cho các vị trí cụ thể (start, end, flags)
        // "I want THIS and THIS to be CLICKED"
        // Index:  0123456789...
        spannableString.setSpan(clickableSpan1, 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  // "THIS"
        spannableString.setSpan(clickableSpan2, 16, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // "THIS"
        spannableString.setSpan(clickableSpan3, 27, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // "CLICKED"

        textView.setText(spannableString);
        // BẮT BUỘC: Set movement method để TextView xử lý click
        textView.setMovementMethod(LinkMovementMethod.getInstance());
    }
}

Lưu ý quan trọng: Phải gọi setMovementMethod(LinkMovementMethod.getInstance()) mới nhận được sự kiện click.

Bước 4: Cấu hình AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị, nhấn Run và thử nhấn vào các từ "THIS" và "CLICKED" để xem Toast.

Cách làm một phần TextView có thể nhấn được trong Android

Cách làm một phần TextView có thể nhấn được trong Android

Cách làm một phần TextView có thể nhấn được trong Android