欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 官方Demo ActionBarCompat-Styled

程序员文章站 2022-03-24 18:45:58
ActionBarCompat-Styled Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Styled/#readme 此示例演示了如何使用自定义的ActionBarCompat,它包含了三个分页标签。需要注意的 ......

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

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

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

Android 官方Demo ActionBarCompat-Styled    Android 官方Demo ActionBarCompat-Styled    Android 官方Demo ActionBarCompat-Styled

 

实现步骤:

  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");
    }
}