什么是ActionBar?
ActionBar或者ToolBar都是一个标题导航栏。ActionBar是android3.0之后出现的一个组件,用于方便快捷的修改标题导航栏的样式。ActionBar的组成
如图所示。
一,第一部分
1表示
1.up button和icon的显示和使用
1、基本使用
2、监听方法
up button:用于回到上一层。
back button: 用于返回到上一个浏览历史界面。
public class MainActivity extends Activity {
private ActionBar mActionBar;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActionBar=getActionBar();
//setDisplayHomeAsUpEnabled是让标题栏有upbtn显示出来。(也就是必须有它才会有upbtn)
mActionBar.setDisplayHomeAsUpEnabled(true);
//相当于开关,true-->upbtn显示出来,false-->upbtn隐藏起来
mActionBar.setDisplayShowHomeEnabled(true);
//默认会显示图标机器人图标
mActionBar.setLogo(R.drawable.more_activity);
//mActionBar.setLogo(R.drawable.ic_launcher);
<span style="white-space:pre"> </span>//也是显示图片效果
//mActionBar.setIcon(R.drawable.ic_launcher);
//取消upbtn 的标题
mActionBar.setTitle("");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(MainActivity.this, "点击upbuttn", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2、View control的使用(视图控制区)
1、列表模式
supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
supportActionBar.setListNavigationCallbacks();
布局就是ListView,省略了哈。
public class MainActivity extends Activity {
private ActionBar mSupportActionBar;
private ListView mListView;
private ArrayAdapter<String> mAdapter;
private List<String> datas = new ArrayList<String>();
private List<String> listDatas = new ArrayList<String>();
private ArrayAdapter<String> mListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initActionBarViewControl();//viewControl
initView();//listView
}
private void initView() {
mListView = (ListView) findViewById(R.id.view_control_list_lv);
mListAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listDatas);
mListView.setAdapter(mListAdapter);//绑定适配器
}
private void initActionBarViewControl() {
// 获取actionBar对象
mSupportActionBar = getActionBar();
setTitle("");
// 指定View Control显示模式
// 列表模式。类似一个Spinner
mSupportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
loadDatas();
// 创建适配器
mAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, datas);
// 设置(callback)适配器并关联
mSupportActionBar.setListNavigationCallbacks(mAdapter,
new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
if (itemPosition == 0) {
return true;
}
Toast.makeText(MainActivity.this, "点击" + itemPosition,
Toast.LENGTH_SHORT).show();
listDatas.clear();
for (int i = 0; i < 10; i++) {
listDatas.add("咪咪" + itemPosition);
}
mListAdapter.notifyDataSetChanged();//设置变量见名字知道意思
return true;//返回true
}
});
}
private void loadDatas() {
datas.add("历史记录");
for (int i = 0; i < 10; i++) {
datas.add("View Control " + i);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2、Tab书签模式(案例:Tab+ViewPager)
supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
supportActionBar.addTab(supportActionBar.newTab().setText("").setIcon().setTabListener());
public class MainActivity extends AppCompatActivity implements ActionBar.TabListener{
private static final String TAG = "androidxx";
private ActionBar mSupportActionBar;
private ViewPager mViewPager;
private MyPagerAdapter myPagerAdapter;
private boolean isUserControlTab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initActionTab();
}
private void initView() {
mViewPager = (ViewPager) findViewById(R.id.tab_view_pager);
myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(myPagerAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (isUserControlTab) {
return;
}
Log.d(TAG, "onPageSelected: ");
mSupportActionBar.setSelectedNavigationItem(position);
Toast.makeText(MainActivity.this, "ViewPager", Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initActionTab() {
//获取ActionBar
mSupportActionBar = getSupportActionBar();
//设置ViewControl的模式
mSupportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//显示Tab
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题1").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题2").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题3").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题4").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题5").setIcon(R.mipmap.ic_launcher).setTabListener(this));
}
/**
* Tab被选中
* @param tab
* @param ft
*/
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
int position = tab.getPosition();
mViewPager.setCurrentItem(position);
Toast.makeText(MainActivity.this, "Tab:" + position, Toast.LENGTH_SHORT).show();
}
/**
* 没有被选
* @param tab
* @param ft
*/
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
/**
* 重新被选
* @param tab
* @param ft
*/
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return MyFragment.newInstance();
}
@Override
public int getCount() {
return 5;
}
}
}
public class MyFragment extends Fragment {
private Context mContext;
static MyFragment newInstance() {
MyFragment myFragment = new MyFragment();
return myFragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getContext();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(mContext);
textView.setText("这是Fragment");
return textView;
}
}
1、列表模式
supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
supportActionBar.setListNavigationCallbacks();
布局就是ListView,省略了哈。
public class MainActivity extends Activity {
private ActionBar mSupportActionBar;
private ListView mListView;
private ArrayAdapter<String> mAdapter;
private List<String> datas = new ArrayList<String>();
private List<String> listDatas = new ArrayList<String>();
private ArrayAdapter<String> mListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initActionBarViewControl();//viewControl
initView();//listView
}
private void initView() {
mListView = (ListView) findViewById(R.id.view_control_list_lv);
mListAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listDatas);
mListView.setAdapter(mListAdapter);//绑定适配器
}
private void initActionBarViewControl() {
// 获取actionBar对象
mSupportActionBar = getActionBar();
setTitle("");
// 指定View Control显示模式
// 列表模式。类似一个Spinner
mSupportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
loadDatas();
// 创建适配器
mAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, datas);
// 设置(callback)适配器并关联
mSupportActionBar.setListNavigationCallbacks(mAdapter,
new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
if (itemPosition == 0) {
return true;
}
Toast.makeText(MainActivity.this, "点击" + itemPosition,
Toast.LENGTH_SHORT).show();
listDatas.clear();
for (int i = 0; i < 10; i++) {
listDatas.add("咪咪" + itemPosition);
}
mListAdapter.notifyDataSetChanged();//设置变量见名字知道意思
return true;//返回true
}
});
}
private void loadDatas() {
datas.add("历史记录");
for (int i = 0; i < 10; i++) {
datas.add("View Control " + i);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2、Tab书签模式(案例:Tab+ViewPager)
supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
supportActionBar.addTab(supportActionBar.newTab().setText("").setIcon().setTabListener());
public class MainActivity extends AppCompatActivity implements ActionBar.TabListener{
private static final String TAG = "androidxx";
private ActionBar mSupportActionBar;
private ViewPager mViewPager;
private MyPagerAdapter myPagerAdapter;
private boolean isUserControlTab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initActionTab();
}
private void initView() {
mViewPager = (ViewPager) findViewById(R.id.tab_view_pager);
myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(myPagerAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (isUserControlTab) {
return;
}
Log.d(TAG, "onPageSelected: ");
mSupportActionBar.setSelectedNavigationItem(position);
Toast.makeText(MainActivity.this, "ViewPager", Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initActionTab() {
//获取ActionBar
mSupportActionBar = getSupportActionBar();
//设置ViewControl的模式
mSupportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//显示Tab
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题1").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题2").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题3").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题4").setIcon(R.mipmap.ic_launcher).setTabListener(this));
mSupportActionBar.addTab(mSupportActionBar.newTab().setText("标题5").setIcon(R.mipmap.ic_launcher).setTabListener(this));
}
/**
* Tab被选中
* @param tab
* @param ft
*/
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
int position = tab.getPosition();
mViewPager.setCurrentItem(position);
Toast.makeText(MainActivity.this, "Tab:" + position, Toast.LENGTH_SHORT).show();
}
/**
* 没有被选
* @param tab
* @param ft
*/
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
/**
* 重新被选
* @param tab
* @param ft
*/
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return MyFragment.newInstance();
}
@Override
public int getCount() {
return 5;
}
}
}
public class MyFragment extends Fragment {
private Context mContext;
static MyFragment newInstance() {
MyFragment myFragment = new MyFragment();
return myFragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getContext();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(mContext);
textView.setText("这是Fragment");
return textView;
}
}
back button: 用于返回到上一个浏览历史界面。
代码
1、up button和icon的显示和使用
1、基本使用
2、监听方法
up button:用于回到上一层。
back button: 用于返回到上一个浏览历史界面。
2、View control的使用(视图控制区)
1、列表模式supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);supportActionBar.setListNavigationCallbacks();
2、Tab书签模式(案例:Tab+ViewPager)supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);supportActionBar.addTab(supportActionBar.newTab().setText("").setIcon().setTabListener());