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