android标题栏详细讲解(1,2)


什么是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;
    }
}










      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());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值