actionbar(Android开源项目)

今天又学习了github上的一个开源库,地址:https://github.com/JakeWharton/ActionBarSherlock
我把其中几个我认为比较常用的功能选取出来分享给大家
另外还截了图供大家比对了看,并没有什么难度
这里写图片描述

    /**
     * getActionBar改变Home部分,menu.add改变Menu Item
     */
    // Menu对应导入的包com.actionbarsherlock.view.Menu
    // MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 设置背景图片,默认撑满整个ActionBar
        getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar));
        // 透明背景
        getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ab_bg_black));

        /**
         * Home部分,用来显示Logo,主副标题
         */
        // 默认存在home区域,如果不想要,设为false
        getActionBar().setDisplayShowHomeEnabled(true);

        // 默认存在Logo,且是app的icon,当然也可以自己设置。不想要Logo设为false
        // 如果setDisplayShowHomeEnabled设为false则下面两行无效
        getActionBar().setDisplayUseLogoEnabled(true);
        getActionBar().setLogo(R.drawable.girl);

        // 显示主副标题。默认为true
        getActionBar().setDisplayShowTitleEnabled(true);
        getActionBar().setTitle("主标题");
        getActionBar().setSubtitle("副标题");

        // setDisplayHomeAsUpEnabled(true)可以响应onOptionsItemSelected
        // 响应Home区域的点击效果,id=android.R.id.home
        getActionBar().setDisplayHomeAsUpEnabled(true);

        /**
         * menu.add改变Menu Item
         */
        // 最常见的MenuItem。由于参数改变getMenuInflater无法使用
        // getMenuInflater().inflate(R.menu.main, menu);
        menu.add(0, Menu.FIRST, 0, "title")
                .setActionView(R.layout.collapsible_edittext)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

        // 自定义button视图
        // item1的id=(Menu.FIRST+1),但button不是,所以无法响应onOptionsItemSelected
        // 只能setOnClickListener
        Button button = new Button(this);
        button.setText("新增");
        menu.add(0, Menu.FIRST + 1, 0, null).setActionView(button)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Button", Toast.LENGTH_SHORT)
                        .show();
            }
        });

        // 自定义button视图。可以响应onOptionsItemSelected
        // 但是非icon区域也会受点击响应的影响
        // 点击后打开系统设置界面
        menu.add(0, Menu.FIRST + 2, 0, null).setIcon(R.drawable.add2)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

        // 显示进度条。oncreate函数里面要有requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        // 注意,是在setContentView前面加
        setSupportProgressBarIndeterminateVisibility(true);
        return true;
    }

这里写图片描述

    /**
     * getActionBar改变Home部分,menu.add改变Menu Item
     */
    // Menu对应导入的包com.actionbarsherlock.view.Menu
    // MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        ......

        // setCustomView是定制视图.它和setActionView区别在于:
        // ActionView可以通过setShowAsAction来改变自己的位置
        // setCustomView不能,只能通过setDisplayShowCustomEnabled来隐藏
        getActionBar().setDisplayShowCustomEnabled(true);
        final View customNav = LayoutInflater.from(this).inflate(
                R.layout.custom_view, null);
        getActionBar().setCustomView(customNav);
        ((RadioGroup) customNav.findViewById(R.id.radio_nav))
                .setOnCheckedChangeListener(new OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {
                        RadioButton button = (RadioButton) customNav
                                .findViewById(checkedId);
                        Toast.makeText(
                                MainActivity.this,
                                "Navigation selection changed to "
                                        + button.getText().toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                });

        // setNavigationMode
        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1);
        adapter.add("hello2");
        adapter.add("hello1");
        adapter.add("hello3");
        getActionBar().setListNavigationCallbacks(adapter,
                new OnNavigationListener() {
                    @Override
                    public boolean onNavigationItemSelected(int itemPosition,
                            long itemId) {
                        Toast.makeText(MainActivity.this,
                                adapter.getItem(itemPosition),
                                Toast.LENGTH_SHORT).show();
                        return true;
                    }
                });
        return true;
    }

这里写图片描述

    /**
     * getActionBar改变Home部分,menu.add改变Menu Item
     */
    // Menu对应导入的包com.actionbarsherlock.view.Menu
    // MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        ...

        // Tab。注意导的包要一致
        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        for (int i = 1; i <= 3; i++) {
            ActionBar.Tab tab = getSupportActionBar().newTab();
            tab.setText("Tab " + i);
            tab.setTabListener(this);
            getSupportActionBar().addTab(tab);
        }
        return true;
    }

我把我的代码放到了这里,可以参考:http://download.csdn.net/detail/lxj1137800599/9548296

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值