Android ActionBar使用方法

    xiaoxiao2021-03-31  35

    对于这ActionBar我想很多人都想了解一下到底是怎么一个使用方法,以及它都存在哪些可操作的和使用的地方。如下图所示:<ignore_js_op> 这便是ActionBar的基本内容。获得ActionBar的方法很简单actionBar = this.getActionBar();1.Home图标区域:这里的图标当然可以在清单文件中定义,也可以在代码中定义,但是在代码中定义需要请求设置的"资格",即需要添加以下代码requestWindowFeature(Window.FEATURE_LEFT_ICON);setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId);而如果想要对home图标进行点击时间处理,则需要在为这个icon“使能”:actionBar.setDisplayHomeAsUpEnabled(true);此home图标的id便是androi.R.id.home;这个home点击事件的监听是在public boolean onMenuItemSelected(int featureId, MenuItem item)里面获取的,例如:

    [Java]  纯文本查看 复制代码 ? 1 2 3 4 5 6 7 8 @Override public boolean onMenuItemSelected( int featureId, MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText( this , "home" , 1 ).show(); break ; } }

    2.标题区域,相应的也有actionBar.setDisplayShowTitleEnabled(true); 当然我们也可以给标题栏设置自己的风格,但是那样也必须在setContentView(R.layout.custom_title);之前添加requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);然后就可以启用getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, resId);resId便是自己想要的布局风格。3.选项卡区域:这个区域,相信便是大家最想也是最近常使用的区域了,它同时有3中不同风格的类型:ActionBar.NAVIGATION_MODE_TABS  ActionBar.NAVIGATION_MODE_LIST  ActionBar.NAVIGATION_MODE_STANDARDActionBar.NAVIGATION_MODE_STANDARD对于这个区域就不用多说了。而对于前面两种如下图所示:ActionBar.NAVIGATION_MODE_TABS当点第一个按钮时:<ignore_js_op>代码的实现其实也很简单:

    [Java]  纯文本查看 复制代码 ? 1 2 3 4 5 6 7 8 actionBar.setTitle( "选项卡" ); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.addTab(actionBar.newTab().setText( "Tab1" ) .setTabListener(MainActivity. this )); actionBar.addTab(actionBar.newTab().setText( "Tab2" ) .setTabListener(MainActivity. this )); actionBar.addTab(actionBar.newTab().setText( "Tab3" ) .setTabListener(MainActivity. this ));

    这里必须为tab添加tablistener事件,如果要操作tab切换事件只需要实现监听方法即可。implements ActionBar.TabListener当点击第二个按钮时:<ignore_js_op>显示一个可以点击下拉的列表,代码如下

    [Java]  纯文本查看 复制代码 ? 1 2 3 4 5 6 7 String[] str = { "1" , "2" , "3" , "4" , "5" }; actionBar.setTitle( "列表" ); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks( new ArrayAdapter<String>( MainActivity. this , android.R.layout.simple_spinner_item, str), MainActivity. this );

    同样的需要实现以下它的点击监听事件implements ActionBar.OnNavigationListener 实现接口的方法便可对列表项进行你想要的操作。4.菜单区域:其实这个区域也就相当于菜单,只是它将menu放到ActionBar这里而已,事件的监听和布局跟操作menu是一样的。    而如果你想要将menu放到ActionBar上,只需要将你需要填放的item添加一个android:showAsAction这样的属性他同时提供给你几个可选的类型:ifRoom|withText 的意思上显示icon和字体 never是从不,always是总是。如图所示:<ignore_js_op>当点击item1这个图标区域时:出现一个:submenu。顾名思义 这个下拉的item就是从属于item1的submenu,如果你想要达到这样的效果,只需要在menu中添加一个submenu便可实现这个效果例如本实例的简单实现:

    [Java]  纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <item android:id= "@+id/action_settings" android:icon= "@drawable/ic_launcher" android:orderInCategory= "3" android:showAsAction= "ifRoom|withText" android:title= "item1" > <menu> <item android:id= "@+id/save" android:icon= "@drawable/ic_launcher" android:orderInCategory= "4" android:showAsAction= "ifRoom|withText" android:title= "item2" /> <item android:id= "@+id/item8" android:icon= "@drawable/ic_launcher" android:orderInCategory= "5" android:showAsAction= "ifRoom|withText" android:title= "item3" /> <item android:id= "@+id/item9" android:icon= "@drawable/ic_launcher" android:orderInCategory= "6" android:showAsAction= "ifRoom|withText" android:title= "item4" /> </menu> </item>

    这样就能达到如此效果。对于item的监听已经强调过,它就是menu的item,所以监听事件的处理在public boolean onMenuItemSelected(int featureId, MenuItem item)了解了这些,相信大家对这些区域对应的点击事件的处理都不是难事。最后贴下源码,方便对照:

    转载请注明原文地址: https://ju.6miu.com/read-665261.html

    最新回复(0)