• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发之ActionBar,androidactionbar

Android开发之ActionBar,androidactionbar

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android开发,android开发教程,android开发入门,android开发入门教程,android开发视频教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发之ActionBar,androidactionbar


  使用微信APP的小伙伴对于微信的ActionBar一定有印象,今天就带领大家一起实现以下这个效果。

  第一步打开我们的开发工具,这里我使用的是Eclipse+ADT插件,然后创建我们的工程,这里选择Android的最低版本号为3.0或以上。

  然后开始我们的"抄袭",首先打开我们微信,我们看到,顶部标题部分,分为左右两部分,左侧为"微信"两字,右侧则为搜索按钮+更多按钮,点击搜索按钮,会出现一个文本输入框。点击更多按钮,则会出现隐藏的menu菜单,分为:添加好友、发起群聊、扫一扫、付款。好了有了设计的框架,我们下面就开始我们的开发。

  首先打开我们工程,在MainActivity.java文件中有一个onCreateOptionsMenu方法,这个方法就是初始化创建我们menu菜单的方法。我们可以看到,默认引用的是res-->menu文件夹下的main.xml文件,默认系统为我们生成一个settings按钮,接下来我们就来修改一下这个文件,然后把我们的菜单添加上:

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

    <item
        android:id="@+id/search"
        android:showAsAction="ifRoom|collapseActionView"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_menu_search"
        android:title="@string/action_search"/>

    <item
        android:id="@+id/addFriend"
        android:icon="@drawable/ic_menu_rotate"
        android:title="@string/menu_addFrideds"/>
    
    <item
        android:id="@+id/teamChart"
        android:icon="@drawable/ic_menu_refresh"
        android:title="@string/menu_teamChart"/>
    
    <item
        android:id="@+id/monery"
        android:icon="@drawable/ic_menu_preferences"
        android:title="@string/menu_getMonery"/>
    
    <item
        android:id="@+id/look"
        android:icon="@drawable/ic_menu_save"
        android:title="@string/menu_look"/>
</menu>

  写好这文件,我还需要在我们的res-->values文件夹下,打开一个文件名为strings.xml的文件,来配置我们的中文常量。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">满艺</string>
    <string name="action_search">检索</string>
    <string name="action_more">更多</string>
    <string name="menu_addFrideds">添加朋友</string>
    <string name="menu_teamChart">发起群聊</string>
    <string name="menu_getMonery">收款</string>
    <string name="menu_look">扫一扫</string>
    
    <string name="welcome">您好,满艺</string>
    
</resources>

  到这里我们现在运行我们的程序,局可以看到我们程序的顶部出现了类似微信的效果,左侧是应用图标+应用名称,右侧则是一个搜索按钮+表示更多的按钮。现在我们先来将系统默认自带的更多图标换成,我们定制的一个按钮。打开我们的AndroidManifest.xml,我们会发现系统默认我们应用了一个样式文件android:theme="@style/AppTheme",点击打开这个样式文件,将我们的自定义更多图标添加到样式上:

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

    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
        <item name="android:actionOverflowButtonStyle">@style/menuOverflowButtonStyle</item>
    </style>
    
    <style name="menuOverflowButtonStyle">
        <item name="android:src">@drawable/ic_menu_more</item>
    </style>

</resources>

  现在我们运行我们的工程,会发现和微信的效果还是有些不同,这是我们就要通过在MainActivity.java文件中,1通过反射机制来设置自定义更多图标显示,2重写onMenuOpened方法来设置每一个menu菜单像微信那样,显示为图标加标题的形式。

package com.example.androidmenuview;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewConfiguration;
import android.view.Window;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        setMenuOverflowAlways();
        getActionBar().setDisplayShowHomeEnabled(false);//设置ActionBar应用图标不显示
    }

    //初始化Menu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(Menu.NONE,Menu.FIRST+6,7,"新增").setIcon(android.R.drawable.ic_input_add);//手动添加menu菜单
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    //添加Menu的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
          case R.id.search:
//            Toast.makeText(this, "检索按钮", Toast.LENGTH_SHORT).show();
            break;
          case R.id.addFriend:
//            Toast.makeText(this, "添加朋友", Toast.LENGTH_SHORT).show();
            break;
          case R.id.teamChart:
//            Toast.makeText(this, "群聊", Toast.LENGTH_SHORT).show();
            break;
          case R.id.look:
//            Toast.makeText(this, "扫一扫", Toast.LENGTH_SHORT).show();
            break;
          case R.id.monery:
//            Toast.makeText(this, "收款", Toast.LENGTH_SHORT).show();
            break;
          case Menu.FIRST+6:
//            Toast.makeText(this, "新增", Toast.LENGTH_SHORT).show();
            break;
          }
        Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
        return super.onOptionsItemSelected(item);
    }
    
    //设置menu菜单的第一个图标显示在标题右上角---使用反射机制来完成
    public void setMenuOverflowAlways(){
        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field field = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
            field.setAccessible(true);
            field.setBoolean(config, false);
        } catch (Exception e) {
    



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发简单服务器
  • android开发使用组件心得
  • 1.2 开发环境搭建
  • android入门,看这一本书就够了,android入门,
  • Android开发笔记(8)——调用子Activity,androidactivity
  • Android开发笔记(9)——初步设置Menu,androidmenu
  • Android开发笔记(6)——类的设定与继承,android笔记
  • Android开发笔记(5)——方法调用(基础),android笔记
  • Android开发笔记(4)——MainActivity.java文件修改&amp;布局嵌套,androidmainactivity
  • Android开发笔记(2)——ViewGroup,androidviewgroup

相关文章

  • 2017-05-26MaterialRefreshLayout,swiperefreshlayout
  • 2017-07-22Android深入四大组件(四)广播的注册、发送和接收过程
  • 2017-05-26android滚动公告栏,android公告栏
  • 2017-05-26Android5.0开发范例大全 读书笔记(六),android5.0范例
  • 2017-05-26第3章 用C#编写百度地图Android手机应用程序(第5讲),
  • 2017-05-26我的Android进阶之旅------)关于android:layout_weight属性的详细解析
  • 2017-07-22自定义收集用户行为统计库 (非常方便 可以自己拓展)
  • 2017-08-0258同城Android端HTTPS实践之旅
  • 2017-05-26上传图像之裁剪,图像裁剪
  • 2017-05-26Android MotionEvent详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Apache Cordova开发Android应用程序——番外篇,cordovaandroid
    • Intent(二)隐式调用intent,调用intent
    • 输入法出现时,局部上移的代码,输入法上移
    • android Notification介绍,androidnotification
    • android如何改变editText控件中部分文字的格式,androidedittext
    • Android-将RGB彩色图转换为灰度图,
    • android布局不带参数返回,android布局参数
    • Android实战技巧之四十九:Usb通信之USB Host
    • 基于Nginx实现10万+并发,你应该做的Linux内核优化
    • 源码解析Android中AsyncTask的工作原理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有