Swarm App Android - 动作栏

时间:2014-09-07 22:00:25

标签: android android-actionbar foursquare

用于Swarm Android应用程序操作栏的元素是什么? 我认为它既不是本机android操作栏也不是actionbarsherlock。

screenshot of swarms actionbar

1 个答案:

答案 0 :(得分:5)

使用 uiautomatorviewer 后,可以看到 base 组件是左侧部分的Horizo​​ntalScrollView内的ImageButtons,右侧部分是带有ImageButton的LinearLayout 。 但是,这并没有详细说明如何获得滑动动画或如何很好地将两个功能部件分开。

我设法使用this fantastic library重新创建它并稍微按摩一下视图。基本上,您将寻呼机滑动标签条(PSTS)作为自定义视图提供给操作栏。

//I call this in the onCreate()of my activity
void setupActionBar() {

    ActionBar actionBar = getActionBar();

    View vwActionBar = View.inflate(this, R.layout.action_bar_main, null);
    tabs = (PagerSlidingTabStrip) vwActionBar.findViewById(R.id.tabs);
    actionBar.setCustomView(vwActionBar);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
}

action_bar_main.xml就是这个

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


    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="wrap_content"
        android:layout_height="?android:attr/actionBarSize"
        android:layout_alignParentBottom="true"
        />


</RelativeLayout>

您还必须更改FragmentPagerAdapter设置PSTS的方式。图书馆样本举例说明了如何做到这一点,但这是我的。

public class MyPagerAdapter extends FragmentPagerAdapter
    implements PagerSlidingTabStrip.IconTabProvider {

    private final int[] ICONS = {
        R.drawable.ic_home,
        R.drawable.ic_dashboard,
        R.drawable.ic_insights,
        R.drawable.ic_stream
    };

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return ICONS.length;
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override public int getPageIconResId(int i) {
        return ICONS[i];
    }
}