Materia Text trong Android

Sử dụng TextView trong Android

Trong quá trình phát triển ứng dụng mobile app trên android chắc hẳng chúng ta thường xuyên sử dụng nhất là controller TextView trong android. Sau quá trình tìm hiểu và sử dụng TextView mình có một số cách triển khai cũng như sử lý các lỗi và giải pháp khi thêm TextView vào dự án, hy vọng các mẹo này sẽ giúp bạn có được các ý tưởng mới trong dự án Android App của bản thân.

1.Hiển thị thẻ HTML trong TextView trên Android.

Về mặc định theo đặc tả của google, controller TextView chỉ hỗ trợ hiển thị Paint Text (Định dạng trình bày văn bản trên máy tính không có format) do đó để hiển thị thẻ HTML trong 1 đoạn văn bản trên TextView thì như thế nào. Trong quá trình triển khai convert 1 web được viết bằng WordPress sang Mobile app thì mình gặp phải vấn đề hiển thị Excerpt với mã Html bên trong trên 1 list Recycler View như hình sau:

TextView trong android không hỗ trợ HTML
TextView trong android không hỗ trợ HTML

Sau đây là một số hướng giải quyết vấn đề này:

a.Sử dụng WebView nếu có thể

Sử dụng control WebView là ý tưởng đầu tiên đa số các bạn thường nghĩ tới đầu tiên trong trường hợp này. Về lý thuyết thì đây là 1 cách tiếp cận đúng, tuy nhiên WebView không hỗ trợ trên CardView khi add vào sẽ báo lỗi. Ngoài ra WebView được tham chiếu với bộ Enginer của Chrome trên thiết bị Android, mà Chrome thì nổi tiếng với bộ nhân chạy tốn ram cực kì, bạn cứ thử nghĩ nếu WebView mà được support cho Recycle thì mỗi 1 item là một nhân bản của Tab Chrome thì trải nghiệm UX/UI của người dùng cực kì tệ. Do đó chỉ nên dùng WebView với duy nhất 1 nội dung.

b.Loại bỏ các thẻ HTML có trong chuỗi trước khi dùng setText cho TextView.

Đây là một hướng tiếp cận tốt nhất cho việc hiển thị các nội dung tóm tắt trên 1 item của Recycle, nội dung này về mặt thực tế thì chỉ có ứng dụng tăng tỉ lệ hướng người dùng vào thẳng nội dung chính bên trong, do đó nó không cần màu mè hay trang điểm gi nhiều, việc cần làm là tạo 1 liên kết đẹp để người dùng chú ý mà click vào nội dung chính. Tuy nhiên khi triển khai cách này bạn nên lưu ý tới phiên bản android mình đang develop để ứng dụng có thể hoạt động tốt nhất trên các target device đã chọn.

Html.fromHtml(bodyData) không còn được hỗ trợ bởi các phiên bản >API 24

Dùng đoạn mã xác nhận phiên bản API đang dùng để xử lý hàm Html.fromHtml(bodyData)  đúng quy cách

Loại bỏ các thẻ HTML trong chuỗi
Loại bỏ các thẻ HTML trong chuỗi
public class Common {
    public static String stripHtmlTag(String str){
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
           return String.valueOf(Html.fromHtml(str,Html.FROM_HTML_MODE_LEGACY));
        } else {
            return String.valueOf(Html.fromHtml(str));
        }
    }

}

3. Sử dụng thư viện TextView bên ngoài có hỗ trợ HTML

Một giải pháp nhanh gọn lẹ là sử dụng 1 thư viện TextView bên ngoài có hỗ trợ hiển thị HTML code nếu bạn nhất thiết phải hiện thị định dạng trên đó. Một thư viện hay được dùng là Html TextView

Html TextView Android
Html TextView Android

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.