`

添加导航栏----(2)添加导航按钮

阅读更多

                                                                   添加导航按钮

    在导航栏中你可以添加一些重要操作的按钮,它们会以图标或文本的形式显示.对于不能在导航栏中完全显示或不是很重要的操作按钮可以将其添加到隐藏的下拉菜单中.如图:

   
 

    (1).通过XML定义操作按钮:

        所有的操作按钮包括下拉菜单中的按钮选项都在一个XML的菜单资源文件中定义.在导航栏中添加按钮,首先在res/menu/路径下创建一个XML文件.

 

        在文件中添加"<item>"元素,每一个"<item>"元素对应一个按钮.如下:

            res/menu/main_activity_actions.xml

 

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
       <!-- Search, should appear as action button -->
       <item android:id="@+id/action_search"
             android:icon="@drawable/ic_action_search"
             android:title="@string/action_search"
             android:showAsAction="ifRoom" />
       <!-- Settings, should always be in the overflow -->
       <item android:id="@+id/action_settings"
             android:title="@string/action_settings"
             android:showAsAction="never" />
</menu>

 

 

        上面的配置表示将会在首页的导航栏中显示一个搜索按钮,设置按钮将会常驻下拉菜单中.(默认情况下,所有的按钮都包含在下拉菜单中,但最好是根据你的设计意图为每一个按钮指定行为)

 

        "icon"属性需要设置一个资源ID来指定图片,"@drawable/"后面的名称必须是你在"res/drawable/"文件夹中

        保存的图片名称.例如,"@drawable/ic_action_search"引用的是"ic_action_search.png"图片.同样的,"title"属性引用"res/values/"路径下的XML文件中的字符串资源.就像我们在"创建第一个android应用"课程中学习的字符串资源引用一样.

 

        备注:当为你的程序创建图标和图片时,为不同分辨率的屏幕提供不同的图片版本是非常重要的.这有利于你的程序在不同的设备上都能按预想的结果运行.

 

        如果你使用支持库使你的程序的兼容版本低到了Android2.1,那么"showAsAction"属性在"android"名称空间下是不可用的.你可以使用支持库提供的属性代替.你必须自定义命名空间,并将这个命名空间作为这个属性的前缀.(虽然允许你定义任何的命名空间,但是最好还是根据你的工程名称来定义.这个命名空间只在声明它的文件中有效.)

        例如:

            res/menu/main_activity_actions.xml

 

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
      <!-- Search, should appear as action button -->
      <item android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:title="@string/action_search"
            yourapp:showAsAction="ifRoom"  />
      ...
</menu>

 

 

 

    (2).将操作按钮添加到导航栏

        通过实现"onCreateOptionsMenu()"回调函数,将菜单资源添加到"Menu"对象中,将按钮添加到导航栏中.如:

           

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
 }

 

 

    (3).响应按钮操作

        当用户点击导航栏中的一个按钮或是下拉菜单中的选项时,系统会调用对应的Activity中的"onOptionsItemSelected()"方法.在这个方法的实现中调用"getItemId()"方法来确定哪个按钮被点击了.返回的ID值对应之前在"<item>"元素中声明的 "android:id"的值.代码如下:

            

@Override
public boolean onOptionsItemSelected(MenuItem item) {
       // Handle presses on the action bar items
       switch (item.getItemId()) {
              case R.id.action_search:
                   openSearch();
                   return true;
              case R.id.action_settings:
                   openSettings();
                   return true;
              default:
                   return super.onOptionsItemSelected(item);
        }
}

 

    (4).为活动页面添加返回按钮

        在你的程序中,不是所有的活动页面都是首页.为了方便用户操作,应该为所有活动页面设置一个包含罗辑层次结构的返回按钮.

 

        当运行Android4.1(API 16)及更高时,或通过Support Library使用"ActionBarActivity"时,只需要在"manifest"文件中为需要在导航栏中显示返回按钮的活动声明一个父活动即可.例如:

           

 <application ... >
        ...
        <!-- The main/home activity (it has no parent activity) -->
        <activity
               android:name="com.example.myfirstapp.MainActivity" ...>
               ...
        </activity>
        <!-- A child of the main activity -->
        <activity
               android:name="com.example.myfirstapp.DisplayMessageActivity"
               android:label="@string/title_activity_display_message"
               android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
               android:name="android.support.PARENT_ACTIVITY"
               android:value="com.example.myfirstapp.MainActivity" />
        </activity>
 </application>

 

        然后通过调用"setDisplayHomeAsUpEnable()"方法为返回按钮设置图标:

            

@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_displaymessage);

       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       // If your minSdkVersion is 11 or higher, instead use:
       // getActionBar().setDisplayHomeAsUpEnabled(true);
}

 

        因为设置了"DisplayMessageActivity"的父类为"MainActivity",当用户点击返回按钮时,系统就会自动导航到

        它的父活动页面.你不需要为返回按钮注册监听事件.

  • 大小: 12.4 KB
分享到:
评论

相关推荐

    bootstrap4实现侧边导航栏带隐藏按钮

    在Bootstrap 4中,实现带有隐藏按钮的侧边导航栏是一项常见的需求,尤其在创建现代网页设计时。这样的导航栏可以节省空间,提升用户体验,特别是在移动设备上。 首先,要创建一个侧边导航栏,我们需要引入Bootstrap...

    ios-灵活自定义导航栏-多个页面显示在同一个页面里面.zip

    在iOS开发中,导航栏(NavigationBar)是应用中不可或缺的一部分,它用于展示当前页面的标题以及提供返回和其他操作的按钮。然而,有时候我们可能需要更灵活的导航栏设计,比如在一个页面内展示多个子页面,这在标题...

    底部导航栏中间圆形按钮凸起效果demo

    在底部导航栏中,每个按钮通常会有一个图标,`ImageView`可以加载这些图标,并根据需求进行相应的操作,比如在中间按钮被选中时,可以通过改变图片的透明度或者添加阴影效果来增强凸起感。 实现这个效果的具体步骤...

    IOS 入门开发之导航栏按钮切换

    2. 利用`UINavigationController`的代理方法,如`didShowViewController:`,可以在某个页面显示时动态改变导航栏按钮。 3. 使用`Notification`或`Block`进行跨层级的通信,实现在特定条件下切换导航栏按钮。 五、...

    ios 导航栏放置多个按钮及引申的ivar变量的问题

    2. 使用UIBarButtonSystemItem:如果你的按钮需要系统提供的样式(如“刷新”、“加号”等),可以使用UIBarButtonSystemItem枚举创建UIBarButtonItem,然后添加到导航栏。 3. 自定义UIView:创建一个继承自UIView...

    android demo,navigationBar,导航栏,左边按钮,右边按钮,中间文字的实现

    为了使导航栏与系统的状态栏融合,可以调整主题设置,例如在`AndroidManifest.xml`中的`&lt;application&gt;`标签内添加以下代码: ```xml &lt;!-- Customize your theme here. --&gt; ...

    参考某东商城的导航栏-基于jqurey.zip

    搜索功能:在导航栏中添加搜索框或搜索按钮,这样用户可以快速搜索所需的商品或信息。 面包屑导航:在网站上添加面包屑导航,这样用户可以清楚地了解当前位置以及如何回到上一个页面或网站首页。 自定义样式:根据您...

    0001-导航栏添加按钮隐藏虚拟按键,上滑调出虚拟按键.patch

    0001-导航栏添加按钮隐藏虚拟按键,上滑调出虚拟按键

    html+css侧边伸缩导航栏

    为了实现伸缩效果,我们通常会添加一个按钮来控制导航栏的展开和关闭,例如: ```html 展开/关闭 ``` 接下来是 CSS 部分。我们需要定义导航栏的基本样式,如宽度、颜色、字体等,并为展开和关闭状态添加不同的样式...

    Qt - 导航栏的实现

    在Qt框架中,导航栏(通常称为工具栏或QToolBar)是用户界面设计中的一个重要元素,它提供了一种直观的方式,使用户能够快速访问常用的功能或进行导航操作。本篇文章将详细探讨如何在Qt中实现一个功能完备的导航栏。...

    超好看的,XML+AS3导航栏-tuxming

    此外,AS3还可以添加事件监听器,使这些导航按钮响应用户的点击,从而跳转到相应的URL。 这个导航栏还具有中英双语功能,这意味着XML文件可能包含了两种语言的导航条目,通过AS3代码可以根据用户的选择切换语言显示...

    Qt 自定义导航栏

    2. **树形结构**:对于树形导航栏,我们可以使用QTreeWidget或QTreeWidgetItem来构建层级结构。每个节点都可以是一个按钮或链接,展开时显示下级菜单。通过设置itemClicked信号与槽函数关联,实现点击事件的处理。 ...

    RK3568 Android11-动态控制状态栏、导航栏的显示和隐藏

    在Android系统中,状态栏和导航栏是用户界面的重要组成部分,它们提供了系统信息显示和应用程序间的导航功能。在某些应用场景下,比如全屏游戏或沉浸式视频观看时,开发者可能需要动态地控制这些元素的显示与隐藏,...

    iOS自定义导航栏

    6. **自定义按钮**:使用`UIBarButtonItem`的初始化方法创建自定义的导航栏按钮,或者直接添加自定义的UIView作为按钮。同时,可以设置按钮的图标、颜色和点击事件。 7. **动态修改导航栏**:在某些特定情况下,...

    ios-自定义导航栏.zip

    - 提升应用风格一致性:开发者可以根据应用的设计需求,自定义导航栏的颜色、字体、按钮样式等,使其与应用整体视觉效果保持一致。 - 扩展功能:可以添加自定义的按钮或视图,实现更丰富的交互功能。 - 控制权:...

    左导航栏隐藏+上导航栏隐藏

    在实际项目中,你可能还需要考虑更多细节,比如添加触发动画、响应式布局调整、以及根据用户行为或屏幕尺寸自动隐藏和显示导航栏。此外,`navigator.js`文件应该包含了实现上述功能的具体JavaScript代码,你可以根据...

    vc动态添加的左侧导航栏工具

    "vc动态添加的左侧导航栏工具"是一个专为Visual C++(VC++)开发者设计的实用程序,它允许在运行时动态创建和管理左侧导航栏。这个工具为用户提供了一种灵活的方式,可以根据用户操作或程序需求切换不同的导航项,极...

    android 隐藏导航栏

    导航栏通常包含了返回、主菜单以及最近任务等按钮,是Android系统界面的一部分。本篇将深入探讨如何在Android应用中实现导航栏的隐藏与显示。 首先,Android的导航栏有两种类型:系统导航栏(System Navigation Bar...

    swift-导航栏颜色渐变通过给viewController添加属性可方便控制titleitem导航栏颜色变化

    这篇教程将专注于如何通过Swift实现导航栏(NavigationBar)的颜色渐变效果,并通过为UIViewController添加属性来控制标题(title)、导航栏按钮(items)以及导航栏本身的颜色变化。这种技术可以使应用程序的界面更...

Global site tag (gtag.js) - Google Analytics