2012-11-26 40 views
7

Tôi có thanh tác vụ có biểu tượng, tiêu đề, 2 tab và chức năng tìm kiếm. Trên điện thoại (3.5") tất cả mọi thứ hoạt động tốt. Các actionbar đã 2 dòng. Tiêu đề logo và chức năng tìm kiếm xuất hiện trên dòng đầu tiên và các tab apear trên dòng thứ hai. enter image description hereThanh tác vụ chuyển đổi các tab sang danh sách điều hướng nếu không có phòng

On tablet của tôi (7 ") everyting được hiển thị trên một dòng. Nhưng các tab sẽ được chuyển đổi thành danh sách khi tôi nhấp vào biểu tượng tìm kiếm. tabs as list navigation

Làm thế nào tôi có thể chia (sherlock) actionbar trong 2 dòng trên của tôi 7" tabblet? Hoặc là có một cách khác để giải quyết vấn đề này?

+0

nó trở lại các tab khi bạn đóng các đầu vào tìm kiếm? –

+0

Có. Khi tôi tạo kiểu cho nền của tab, nền sẽ biến mất khi tôi mở rộng chế độ xem tìm kiếm. (Vì vậy, tôi chắc chắn đó là một danh sách hành động và không có thanh tab nữa) – Rickyrick

Trả lời

4

Tôi tìm thấy một giải pháp để tách các tab trong mã .

private void embeddedTabs(Object actionBar, Boolean embed_tabs) { 


try { 

     if (actionBar instanceof ActionBarWrapper) { 
      //ICS and forward 
      try { 
       Field actionBarField = actionBar.getClass().getDeclaredField("mActionBar"); 
       actionBarField.setAccessible(true); 
       actionBar = actionBarField.get(actionBar); 
      } catch (Exception e) { 
       Log.e("", "Error enabling embedded tabs", e); 
     } 
    } 
    Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class); 
    setHasEmbeddedTabsMethod.setAccessible(true); 
    setHasEmbeddedTabsMethod.invoke(actionBar, embed_tabs); 
} catch (Exception e) { 
    Log.e("", "Error marking actionbar embedded", e); 
} 

}

Nhưng bây giờ tôi có một vấn đề mới. các tab không điền vào thanh tabbar hoàn toàn. Actionbar tabs don't fill the tabbar

5

Trong ActionBarSherlock, có một giá trị boolean (abs__action_bar_embed_tabs) xác định xem tab nên được nhúng trong ActionBar và giá trị này được lưu trữ trong hai tệp.

  • Trong giá trị/abs__bools.xml. Nó sai rồi.
  • Trong các giá trị-w480/abs__bools.xml. Đúng rồi.

Điều này có nghĩa Tab sẽ chỉ được nhúng nếu chiều rộng của thiết bị lớn hơn 480dp.

Nếu bạn muốn tự mình kiểm soát tất cả, bạn chỉ có thể tạo giá trị-w480 trong dự án của riêng mình và đặt abs__action_bar_embed_tabs thành false để ghi đè giá trị trong dự án thư viện.

+0

cảm ơn. điều này giải thích hành vi kỳ lạ như vậy của sherlock thanh hành động. – grine4ka

+0

bạn có nghĩa là tên thư mục '' values-w480dp '', theo https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values-w480dp/abs__bools.xml – balint

+1

anyway: không sử dụng theo http : //stackoverflow.com/questions/13581155/how-does-action-bar-embed-tabs-exactly-work-in-android – balint

1

phương pháp này hoạt động tốt đối với tôi:

Chỉ cần đặt PHƯƠNG PHÁP NAVIGATION, sau khi thêm TABS THÊM:

... // adding tabs 

bar.setNavigationMode(ActionBar.Navigation_mode_tabs);

Các vấn đề liên quan