2012-07-10 36 views
5

enter image description hereAndroid ActionBarSherlock Top Bar

Tôi muốn có một thanh hành động như đồ. Những gì tôi muốn là các tab như Bạn bè, Khám phá và Tôi. Ngoài ra, phía trên các tab tôi muốn có bố cục tùy chỉnh bao gồm một số nút như biểu trưng foursquare, Làm mới và Đăng ký trong ô. Tôi đã tạo các tab nhưng tôi không thể thay đổi bố cục ở trên các tab trong ActionBarSherlock. Làm thế nào tôi có thể giải quyết vấn đề này?

+0

Bạn có thể cung cấp cho chúng tôi màn hình in của ứng dụng Foursquare không? – ninetwozero

+0

Tôi đã thêm ps of foursquare. – BCK

+0

Tôi khá chắc chắn rằng họ sử dụng một thực hiện cá nhân của thanh, và họ không sử dụng ActionBarSherlock. –

Trả lời

7

Để đạt được diện mạo Foursquare, bạn không cần nghĩ đến việc tạo bố cục phía trên các tab. Khi sử dụng Actionbar Sherlock bạn chỉ cần phải lo lắng về việc:

  1. Làm nền cho thanh trên cùng
  2. Làm logo cho thanh trên cùng
  3. Thêm mục trong một tập tin menu.xml rằng ActionBarSherlock sẽ sử dụng để cư trú phần trên cùng với các nút (miễn là một kiểu sử dụng phong cách Sherlock Actionbar được gắn với hoạt động thw).

Vì vậy, ví 1. và 2. nó là tất cả về việc sử dụng tập tin styles.xml (nên nằm trong thư mục các giá trị trong thư mục res) như sau:

<style name="Theme.Example" parent="Theme.Sherlock"> 
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
    <item name="absForceOverflow">true</item>  
</style> 

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar.Solid"> 
    <item name="background">@drawable/actionbar_background</item> <-- the background for top bar 
    <item name="icon">@drawable/actionbar_logo</item> <-- the logo that goes top left in the top bar 
    <item name="backgroundSplit">@drawable/bg_striped_split</item> <-- the image used between the menu items 
</style> 

Đối 3. tất cả các bạn cần phải làm là tạo ra các mục menu dưới menu.xml (nên nằm trong thư mục menu (nếu không có, tạo ra một trong thư mục res)):

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android">  

<item android:id="@+id/menu_prefs" 
     android:icon="@drawable/settings_icon" 
     android:title="Preferences" 
     android:showAsAction="ifRoom" /> 
</menu> 

điều cuối cùng bạn cần làm để xem các mục trong menu đang sử dụng các chức năng này trong hoạt động:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

public boolean onOptionsItemSelected (MenuItem item) { 

    Intent intent; 

    switch (item.getItemId()) 
    { 
    case R.id.menu_prefs: 

     // Launch Preference Activity 
     intent = new Intent(getBaseContext(), Preferences.class);   
     startActivity(intent); 
     break; 
    } 

    return false; 
} 
+0

Cảm ơn bạn đã trả lời. – BCK

+0

Có một vấn đề khác, do mã của bạn, tôi muốn có một ListNavigation hoặc ActionMode khi menu_prefs được nhấp. Ngoài ra, có một tab. Làm thế nào tôi có thể quản lý điều này? – BCK

+0

@Richard Lewin - Khi sử dụng ví dụ trên, điều hướng trên cùng "màu xanh" xuất hiện bên dưới các tab của tôi - bất kỳ ý tưởng nào và tại sao phải làm điều đó ở trên? Ngoài ra khi phong cảnh thanh hàng đầu sụp đổ vào các tab - dù sao để buộc nó ở trên đầu? – bMon

3

Để đặt các mục tác vụ tùy chỉnh của bạn (làm mới, đăng ký, ...), bạn phải ghi đè lênCreateOptionsMenu (trình đơn Menu) và đặt menu tùy chỉnh của bạn.

ví dụ: Menu

File/my_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/refresh" 
     android:icon="@drawable/ic_menu_refresh" 
     android:title="refresh" 
     android:showAsAction="always"> 
    </item> 

</menu> 

Sau đó, trong hoạt động của bạn (hoặc đoạn):

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 

    // Allow activity and fragments to add items 
    super.onCreateOptionsMenu(menu); 

    return true; 
} 

Và để được thông báo khi họ được lựa chọn, chỉ cần ghi đè onOptionsItemSelected (mục MenuItem):

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case android.R.id.refresh : 
     // refresh your data... 
     return true; 

    default : 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Cảm ơn bạn đã trả lời. – BCK

+0

@Chinaski - Tương tự như trên: Khi sử dụng ví dụ ở trên, điều hướng trên cùng "màu xanh" xuất hiện bên dưới tab của tôi - bất kỳ ý tưởng nào và tại sao phải làm điều đó ở trên? Ngoài ra khi phong cảnh thanh hàng đầu sụp đổ vào các tab - dù sao để buộc nó ở trên đầu? – bMon

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