Android学习第二篇——ActionBar

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/F_Felix/article/details/50923883

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没有成功,还需要进行练习。

猜你喜欢

转载自blog.csdn.net/F_Felix/article/details/50923883