关闭

ActionBar粗谈

标签: menuandroidactiontabssearchlist
1299人阅读 评论(0) 收藏 举报
分类:

ActionBar.NAVIGATION_MODE_LIST:

ActionBar bar = this.getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

bar.setListNavigationCallbacks(newSimpleSpinnerArrayAdapter(this),new ListListener(this,this));

SimpleSpinnerArrayAdapter继承ArrayAdapter<String>实现SpinnerAdapter接口

ListListener关键要实现ActionBar.OnNavigationListener接口

 

ActionBar.NAVIGATION_MODE_STANDARD:
ActionBar bar = this.getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

之后若添加Tab且不为Tab设置监听,不会报错.Tab也不会显示.

 

ActionBar.NAVIGATION_MODE_TABS:

ActionBar bar = this.getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

TabListener tl = new TabListener(this,this);

Tab tab1 = bar.newTab();

tab1.setText("Tab1");

tab1.setTabListener(tl);

bar.addTab(tab1);

如果忘记在添加到操作栏的选项卡上调用setTabListener(),将会获得一个表明需要监听器的运行时错误.

 

ActionBar同时可以设置自定义的View

ActionBar bar = this.getActionBar();

bar.setCustomView(view);

在ActionBar的中间位置添加自定义的View

 

由于ActionBar的右边栏是Menu的集合在Activity:onCreateOptionsMenu(Menumenu)中添加

@Override
 public boolean onCreateOptionsMenu(Menu menu){
  MenuInflater menuInflater =getMenuInflater();
  menuInflater.inflate(R.menu.main,menu);
  returnsuper.onCreateOptionsMenu(menu);
}

而在R.menu.main的\res\menu\main.xml文件中,可以定义普通的Menu也可以定义自定义的

<menu xmlns:android="http://schemas.android.com/apk/res/android">

   <item
       android:id="@+id/menu_refresh"
       android:icon="@drawable/ic_action_refresh"
       android:orderInCategory="2"
       android:showAsAction="always"
       android:title="@string/menu_refresh"/>

   <item
       android:id="@+id/menu_search"
       android:icon="@drawable/ic_action_search"
       android:orderInCategory="1"
       android:showAsAction="always"
       android:title="@string/menu_search">
       <menu>
           <item
               android:id="@+id/menu_search1"
               android:icon="@drawable/ic_action_search"
               android:title="@string/menu_search"/>
        </menu>
   </item>

    <itemandroid:id="@+id/menu_search3"
      android:title="Search"
      android:orderInCategory="0"
      android:showAsAction="ifRoom"
      android:actionViewClass="android.widget.SearchView" />

   <item
       android:id="@+id/menu_share"
       android:icon="@drawable/ic_menu_share"
       android:orderInCategory="1"
       android:showAsAction="never"
       android:title="@string/menu_share"/>

</menu>

android:showAsAction让Menu如何显示,分为四种:

ifRoom;always;never;withText

ifRoom表示如果有空间就显示

always表示总是显示

never则会在最右边的其他Menu的列表中显示

withText无非就是显示加上Text

android:actionViewClass

可以自定相应的View,这边调用的是系统自带的android.widget.SearchView:点击Menu使Menu变长并成为搜索框

 

ActionBar的样式目前只知道能从Manifest中通过android:theme来指定自定义的theme来操作,自定义的theme必须继承ActionBar或者Holo,列如:parent="@android:style/Theme.WithActionBar"


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7597次
    • 积分:168
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类