2012-07-10 7 views
5

enter image description here안드로이드 ActionBarSherlock의 최고 바

나는 포 스퀘어 같은 작업 표시 줄을 갖고 싶어. 내가 원하는 것은 친구, 탐색 및 Me와 같은 탭입니다.. 또한, 탭 위에 나는 foursquare 로고, 새로 고침 및 체크인과 같은 일부 버튼을 포함하는 맞춤 레이아웃을 갖고 싶습니다. 탭을 만들었지 만 ActionBarSherlock의 탭 위 레이아웃을 변경할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

Foursquare의 앱 인쇄 화면을 제공해 주시겠습니까? – ninetwozero

+0

나는 foursquare의 ps를 추가했다. – BCK

+0

나는 바의 개인 구현을 사용하고 ActionBarSherlock을 사용하지 않을 것이라고 확신한다. –

답변

7

Foursquare 모양을 얻으려면 탭 위에 레이아웃을 만들 필요가 없습니다.

  1. ActionBarSherlock의가 사용하는 menu.xml 파일에 항목을 추가 상단 바
  2. 에 대한 로고를 만들기 상단 바
  3. 에 대한 배경을 만들기 : 실행 바 셜록을 사용하는 경우 당신은 단지에 대해 걱정할 필요가 버튼을 사용하여 상단 섹션을 채 웁니다 (액션 바 셜록 스타일을 사용하는 스타일이 활동에 첨부되어있는 한).

그래서, 1과 2를 위해 모든 styles.xml 파일을 사용하는 방법에 대한 그래서 같은 (입술 폴더에있는 값 폴더에 있어야합니다)이야 :

<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> 

를 3. 당신이 필요로하는 모든 경우 menu.xml에서 메뉴 항목을 생성 할 일은 (입술 폴더를 만들 수 없습니다이 경우) (메뉴 폴더에 있어야합니다) :

<?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> 

사용자가 메뉴 항목을 확인해야 할 마지막 일을 액티비티에서 다음 함수를 사용합니다 :

@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

답장을 보내 주셔서 감사합니다. – BCK

+0

menu_prefs를 클릭 할 때 코드에 따라 ListNavigation 또는 ActionMode를 갖고 싶기 때문에 또 다른 문제가 있습니다. 또한 탭이 있습니다. 어떻게 관리 할 수 ​​있습니까? – BCK

+0

@ 리차드 루인 (Reichard Lewin) - 위의 예를 사용할 때, "파란색"상단 네비게이션이 내 탭 아래에 나타납니다. 또한 조경 때 상단 막대가 탭에 붕괴 - 어쨌든 그것이 맨 위에 머물 수 있도록? – bMon

3

사용자 작업 항목 (새로 고침, 체크인 ...)을 설정하려면 onCreateOptionsMenu (메뉴 메뉴)를 재정의하고 사용자 정의 메뉴를 설정해야합니다.

예 :

파일 메뉴/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> 
활동에서 그런

(또는 조각) :

@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; 
} 

그리고 그들은 선택하면 통보하는 단지 재정의 onOptionsItemSelected (MenuItem item) :

@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

답장을 보내 주셔서 감사합니다. – BCK

+0

@Chinaski - 위와 동일 : 위의 예를 사용할 때 "파란색"위쪽 탐색이 내 탭 아래에 표시됩니다. 이유는 무엇입니까? 또한 조경 때 상단 막대가 탭에 붕괴 - 어쨌든 그것이 맨 위에 머물 수 있도록? – bMon