叭叭呜 2018-05-03
ActionBarCompat-Styled Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Styled/#readme
此示例演示了如何使用自定义的ActionBarCompat,它包含了三个分页标签。需要注意的是,ActionBar的分页模式已经在API 21以后被遗弃。
界面在不同设备上可能会有所差别,以下是其中一些截图:
实现步骤:
下面是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"); } }