CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
HỌC LẬP TRÌNH ANDROID
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

ViewStub trong Android

ViewStub là một thành phần quan trọng trong phát triển ứng dụng Android, giúp tăng tốc độ hiển thị trang và tiết kiệm tài nguyên hệ thống. Trong bài viết này, chúng tôi sẽ giới thiệu khái niệm, vai trò, phân tích các thuộc tính, cách sử dụng và đưa ra ví dụ minh họa về ViewStub trong Android.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Giới thiệu về ViewStub trong Android

ViewStub là một lớp được cung cấp bởi Android SDK để giúp tạo ra các thành phần giao diện người dùng linh hoạt và hiệu quả. Nó cho phép tạo ra các thành phần giao diện người dùng một cách động, chỉ khi chúng được yêu cầu, giúp giảm thiểu việc tải tài nguyên không cần thiết và tăng tốc độ hiển thị trang.

viewstub jpg

ViewStub được thiết kế để chứa một thành phần giao diện người dùng, và được thêm vào layout của một activity hay một fragment. Khi ViewStub được gọi, nó sẽ thay thế chính nó bằng thành phần giao diện người dùng được chỉ định, và được thêm vào layout của activity hoặc fragment đó.

Bài viết này được đăng tại [free tuts .net]

2. Các thuộc tính của ViewStub trong Android

ViewStub có một số thuộc tính quan trọng để giúp tùy chỉnh và quản lý hiển thị của thành phần giao diện người dùng. Các thuộc tính này bao gồm:

  • android:id: Xác định ID duy nhất của ViewStub
  • android:layout: Xác định layout của ViewStub
  • android:inflatedId: Xác định ID của View được thay thế khi ViewStub được gọi
  • android:visibility: Xác định trạng thái hiển thị của ViewStub

Để hiểu hơn về các thuộc tính của ViewStub trong Android, chúng ta sẽ tiếp tục tìm hiểu về cách sử dụng của nó.

3. Cách sử dụng của ViewStub trong Android

Để sử dụng ViewStub trong ứng dụng Android, bạn có thể làm theo các bước sau:

Bước 1: Thêm ViewStub vào layout của activity hay fragment bằng cách sử dụng thuộc tính android:id để xác định ID duy nhất của nó.
Bước 2: Tạo layout cho thành phần giao diện người dùng mà bạn muốn thay thế ViewStub. Thêm thuộc tính android:id vào thành phần này để xác định ID của nó.
Bước 3: Trong code của activity hoặc fragment, sử dụng phương thức findViewById() để tìm ViewStub theo ID của nó.

Bước 4: Gọi phương thức inflate trên ViewStub để thay thế ViewStub bằng thành phần giao diện người dùng được chỉ định.

Trong quá trình inflate, bạn có thể tùy chỉnh View mới được tạo ra trước khi nó được thêm vào layout của activity hoặc fragment. Để minh họa cách sử dụng ViewStub trong Android, chúng tôi sẽ tạo một ứng dụng đơn giản có chứa một ViewStub để thay thế một thành phần giao diện người dùng khác.

Đầu tiên, chúng ta sẽ tạo một layout chứa một ViewStub và một nút để gọi ViewStub đó:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn_show_viewstub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show ViewStub"
        android:layout_centerInParent="true"/>

    <ViewStub
        android:id="@+id/viewstub"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn_show_viewstub"
        android:inflatedId="@+id/content"
        android:layout="@layout/viewstub_layout"
        android:visibility="gone" />

</RelativeLayout>

Ở đây, chúng ta đã thêm một ViewStub với ID là "viewstub" và layout được chỉ định là @layout/viewstub_layout. ViewStub có thuộc tính inflatedId để xác định ID của View được thay thế khi ViewStub được gọi. Chúng ta đã đặt thuộc tính visibility của ViewStub thành gone để ẩn nó ban đầu.

Tiếp theo, chúng ta sẽ tạo một layout cho thành phần giao diện người dùng mà chúng ta muốn thay thế ViewStub. Trong ví dụ này, chúng ta sẽ tạo một layout đơn giản có chứa một TextView.

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

Ở đây, chúng ta đã đặt ID của TextView thành content, giống với giá trị của thuộc tính inflatedId của ViewStub.

Cuối cùng, chúng ta sẽ sử dụng ViewStub trong code java của activity để thay thế ViewStub bằng thành phần giao diện người dùng mà chúng ta vừa tạo ra:

public class MainActivity extends AppCompatActivity {

    private ViewStub viewStub;
    private boolean isViewStubInflated = false;

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

        viewStub = findViewById(R.id.viewstub);

        Button btnShowViewStub = findViewById(R.id.btn_show_viewstub);
        btnShowViewStub.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            if (!isViewStubInflated) {
                View inflatedView = viewStub.inflate();
                isViewStubInflated = true;
             }
         }
        });
       }
      }


Ở đây, chúng ta đã lấy ViewStub từ layout bằng ID và đặt thuộc tính isViewStubInflated thành false. Khi người dùng nhấp vào nút Show ViewStub`, chúng ta kiểm tra xem isViewStubInflated có phải là false không. Nếu là false, chúng ta gọi phương thức inflate() của ViewStub để thay thế nó bằng thành phần giao diện người dùng được chỉ định trong layout @layout/viewstub_layout. Sau đó, chúng ta đặt `isViewStubInflated` thành `true`.

Kết quả là khi người dùng nhấp vào nút `Show ViewStub`, ViewStub sẽ được thay thế bằng TextView chứa nội dung "Hello World!".

4. Tổng kết

ViewStub là một công cụ hữu ích trong Android để tối ưu hóa hiệu suất của ứng dụng. Bằng cách sử dụng ViewStub, chúng ta có thể giảm thiểu thời gian inflate layout và tiêu thụ bộ nhớ của ứng dụng. Hơn nữa, ViewStub cũng cho phép chúng ta chủ động tùy chỉnh và sửa đổi layout trước khi nó được thêm vào trong activity hoặc fragment. Qua bài này freetuts hy vọng rằng với những kiến thức trên đây bạn có thể thành thạo áp dụng vào công việc phát triển ứng dụng Android.

Cùng chuyên mục:

Tìm hiểu về vòng đời của Activity trong Android

Tìm hiểu về vòng đời của Activity trong Android

AlarmManager trong Android

AlarmManager trong Android

Menu trong Android

Menu trong Android

Fragments trong Android

Fragments trong Android

SearchView trong Android

SearchView trong Android

TabLayout trong Android

TabLayout trong Android

Image Slider trong Android

Image Slider trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

ScrollView trong Android

ScrollView trong Android

ProgressBar trong Android

ProgressBar trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Cách dùng TimePicker trong Android

Cách dùng TimePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng SeekBar trong Android

Cách dùng SeekBar trong Android

Cách dùng WebView trong Android

Cách dùng WebView trong Android

Cách dùng RatingBar trong Android

Cách dùng RatingBar trong Android

Cách dùng ListView trong Android

Cách dùng ListView trong Android

AutoCompleteTextView trong Android

AutoCompleteTextView trong Android

Spinner trong Android

Spinner trong Android

AlertDialog trong Android

AlertDialog trong Android

Top