Android 官方Demo ActionBarCompat

ActionBarCompat-Styled Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Styled/#readme

此示例演示了如何使用自定义的ActionBarCompat,它包含了三个分页标签。需要注意的是,ActionBar的分页模式已经在API 21以后被遗弃。

界面在不同设备上可能会有所差别,以下是其中一些截图:

        

 

实现步骤:

  1. 创建Activity并继承AppCompatActivity,实现ActionBar.TabListener接口;
  2. 在res资源文件夹下创建menu文件夹,并在menu文件夹下创建主菜单布局xml;
  3. 重写onCreateOptionsMenu()方法,创建并初始化菜单;
  4. 创建并初始化Tab分页。

下面是Demo代码,可以通过加载Fragment达到分页显示不同内容的效果。

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;

public class ActionBarStyledActivity extends AppCompatActivity implements ActionBar.TabListener {

    private final String TAG = "ActionBarStyledActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_action_bar_styled);
        // 设置菜单使用Tab分页
        ActionBar ab = getSupportActionBar();
        /*
        设置当前导航模式。导航模式有三种:
         NAVIGATION_MODE_STANDARD:标准导航模式。
         NAVIGATION_MODE_LIST:标签导航模式。
         NAVIGATION_MODE_TABS:下拉列表导航模式。
         */
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // 创建Tab分页
        ab.addTab(ab.newTab().setText("Tab 1").setTabListener(this));
        ab.addTab(ab.newTab().setText("Tab 2").setTabListener(this));
        ab.addTab(ab.newTab().setText("Tab 3").setTabListener(this));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 绑定菜单布局文件,布局文件已定义两个菜单子项refresh和settings
        getMenuInflater().inflate(R.menu.styled_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {
        // Tab分页被选中时调用.
        Log.i(TAG, tab.getText() + " onTabSelected");
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {
        // 当前Tab分页不再被选中,被下一个选中的分页替代时调用。例如当前选中Tab1,当你点击Tab2时,Tab1会触发此方法,而Tab2会触发onTabSelected.
        Log.i(TAG, tab.getText() + "onTabUnselected");
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {
        // 已选中此Tab分页,再次点击选中同一个分页时调用。例如已经选中了Tab1,当你再次点击Tab1时,Tab1会触发此方法。
        Log.i(TAG, tab.getText() + "onTabReselected");
    }
}

Android 官方Demo ActionBarCompat

全文结束