Android学习第二篇——ActionBar

Android Support兼容包详解

Android Theme的结构关系图

学习ActionBar可能还需要知道以上这个知识点.


差不多了解了以上的知识后,我们开始练习怎么往ActionBar上添加按钮

<span style="font-size:18px;"><menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.myactionbar320.MainActivity" >

    <item 
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search"
        android:title="@string/search"
        <span style="color:#ff0000;">android:showAsAction="ifRoom"
        app:showAsAction="ifRoom"</span>
        />
    <item 
        android:id="@+id/action_setting"
        android:title="@string/setting"
        android:showAsAction="never"
        />
</menu></span>
注意以上用红色标记的代码,这两段代码实现的效果是一样的,效果就是当actionBar空间足够的情况下,按钮直接显示在ActionBar上,而不是显示在action overflow里,但是在这里上一行的代码是无效的,无法让search按钮显示在actionBar上,而是显示在了action overflow里面。

效果是这样的


我们可以看到一个搜索的按钮出现在了ActionBar上。当然此时我们点击这些按钮是没有效果的,我们还没给这些按钮添加点击事件。



接下来我们需要在MainActivity中重写一个方法onOptionsItemSelected

<span style="font-size:18px;">@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.action_search:
			Toast.makeText(this, "action_search", 0).show();
			break;
		case R.id.action_setting:
			Toast.makeText(this, "action_setting", 0).show();
			break;
		}
		return super.onOptionsItemSelected(item);
	}</span>
效果如下



接下来我们来练习一下Tab

		ActionBar actionBar = getActionBar();//for <3.0 用getSupportActionBar();
		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//选择样式为Tab
		
		//设置监听事件
		ActionBar.TabListener tabListener = new ActionBar.TabListener() {
			
			@Override
			public void onTabUnselected(Tab tab, FragmentTransaction ft) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onTabSelected(Tab tab, FragmentTransaction ft) {
				Toast.makeText(MainActivity.this, "Tab"+tab.getPosition(), 0).show();
			}
			
			@Override
			public void onTabReselected(Tab tab, FragmentTransaction ft) {
				// TODO Auto-generated method stub
				
			}
		};
		//用for循环声称3个Tab标签
		for (int i = 0; i < 3; i++) {
			Tab tab=actionBar.newTab();
			tab.setText("Tab"+i);
			tab.setTabListener(tabListener);
			actionBar.addTab(tab);
		}



练习的时候出现过这样一个Error

Type mismatch: cannot convert from android.app.ActionBar to android.support.


这可能是因为你的import里面的包没有导好,可以重新创建一个后再来练习。


最后还有一个方面,就是设置ActionBarOverlay样式

同样是自定义该样式,代码如下

 <style name="CustomActionOverLayTheme" parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
 </style>

后面还有一点ActionBarProvider没有成功,还需要进行练习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值