9

Có thể xóa/khôi phục thanh tab từ thanh hành động không?Android ActionBar: hiển thị/ẩn các tab động?

Đến nay tôi đã thực hiện việc này bằng cách thay đổi chế độ điều hướng của thanh tác vụ. Tôi sử dụng đoạn mã sau để loại bỏ và khôi phục thanh tab:

@Override 
public void restoreTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    this.supportInvalidateOptionsMenu(); 
} 

@Override 
public void removeTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    this.supportInvalidateOptionsMenu(); 
} 

đó làm việc, nhưng có một vấn đề lớn: Mỗi lần tôi gọi setNavigationMode, onTabSelected được gọi trong TabListener và tab hiện opend được tái tạo.

Trả lời

1

Thao tác này hoạt động như dự định, vì tab đang được chọn vì tab này không xuất hiện. Tôi đề nghị bạn nên làm điều khiển của riêng bạn trong TabListener.

3
public void onDrawerClosed(View view) { 
    getActionBar().setTitle(mTitle); 
    // calling onPrepareOptionsMenu() to show action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    invalidateOptionsMenu(); 
} 

public void onDrawerOpened(View drawerView) { 
    getActionBar().setTitle(mDrawerTitle); 
    // calling onPrepareOptionsMenu() to hide action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    invalidateOptionsMenu(); 
} 
4

Để loại bỏ các tab actionbar động, bạn chỉ cần:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

Để thêm chúng một cách nhanh chóng, bạn chỉ cần làm:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

Đối với trường hợp thứ hai, giả định là sau khi đặt chế độ điều hướng, bạn cũng sẽ thêm tab, vào thanh tác vụ, tương tự như sau:

for (int resourceId : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(resourceId) 
       .setTabListener(this)); 
} 
Các vấn đề liên quan