`
abc20899
  • 浏览: 931706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义Android菜单背景

阅读更多
public class MainActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
   
    MenuInflater inflater = new MenuInflater(getApplicationContext());  //实例化MenuInflater
    inflater.inflate(R.menu.menu_options, menu);
    setMenuBackground();
    return true;
    }
   
    // 关键代码就是重写Layout类的工厂方法onCreateView,这里对比绘制的View来替换系统中的
    public void setMenuBackground(){
    getLayoutInflater().setFactory( new Factory() {
        @Override
        public View onCreateView ( String name, Context context, AttributeSet attrs ) {
           if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
          //上面这句不能有改动,目前来看对于原生android目前这个packageName还没有变化
            try {
             LayoutInflater f = getLayoutInflater();
             final View view = f.createView( name, null, attrs );  //尝试创建我们自己布局
             new Handler().post( new Runnable() {
              public void run () {
               view.setBackgroundResource(R.drawable.back); //设置背景为我们自定义的图片,替换cwj_bg文件即可
              }
             } );
             return view;
            }
             catch ( InflateException e ) {}
             catch ( ClassNotFoundException e ) {}
           }
            return null;
          }
    });
     }
   
    @Override
    protected void onResume() {
    super.onResume();
    }
    @Override
    protected void onPause() {
    super.onPause();
    }
   
    @Override
    protected void onStop() {
    super.onStop();
    }

}


res/menu/options_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/new_game" 
          android:title="New Game" /> 
    <item android:id="@+id/quit" 
          android:title="Quit" /> 
</menu>


分享到:
评论

相关推荐

    自定义Android菜单oc

    以下是如何自定义Android菜单背景的详细步骤和相关知识点: 1. **创建自定义菜单布局** 在`res/menu`目录下创建一个新的XML文件,例如`options_menu.xml`,定义菜单项。例如: ```xml &lt;menu xmlns:android=...

    android 自定义Android菜单背景的代码

    下面将详细介绍如何自定义Android菜单背景。 首先,我们需要创建一个XML布局文件,用于定义自定义菜单项的外观。这个布局文件可以包含图像、颜色、形状等元素,以满足我们的设计需求。例如,我们创建一个名为`cwj_...

    android使用popupwindow自定义menu菜单

    本篇将详细介绍如何在Android中利用`PopupWindow`来实现自定义的menu菜单。 首先,我们需要了解`PopupWindow`的基本用法。`PopupWindow`类提供了创建和管理浮动窗口的功能。它可以在任意视图上方显示,可以设置大小...

    Android自定义VIew实现卫星菜单效果浅析

    总的来说,实现自定义卫星菜单效果涉及理解Android View的工作原理,掌握如何解析和使用自定义属性,以及如何绘制和动画化View。通过这种方式,开发者可以构建出独特且互动性强的用户界面,增强应用的用户体验。在...

    android 自定义下拉菜单模式——Spinner与setDropDownViewResource

    在Android开发中,Spinner是一种常用的UI组件,它用于实现下拉选择菜单的功能,类似于iOS中的PickerView。在很多场合,开发者需要对Spinner进行自定义,以满足特定的设计需求。本篇将详细介绍如何利用Spinner和`...

    Android自定义Spinner样式

    本文将详细介绍如何自定义Android Spinner的样式,包括选择框背景、选择框文字属性以及弹出框文字属性。 1. **选择框背景** - 背景资源:可以使用`android:background`属性设置自定义背景图,或者通过XML定义形状...

    自定义弧形菜单

    总之,"自定义弧形菜单"项目展示了如何在Android中利用自定义ViewGroup来实现复杂的UI组件。这涉及到布局管理、手势识别、事件处理以及自定义绘图等多个方面的知识。开发者可以通过这个项目学习到如何将这些技术结合...

    android自定义View(五)打造自己的遥控器菜单

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。本篇文章将深入探讨如何打造一个圆形的遥控器菜单,为用户提供类似电视遥控器的操作体验。这个自定义View将...

    uni-app-小程序自定义底部菜单样式示例

    【uni-app小程序自定义底部菜单样式示例】 在uni-app框架中,开发微信小程序、支付宝小程序、H5等多端应用时,我们经常会遇到需要自定义底部导航菜单的需求,以实现更加个性化和一致性的用户体验。本示例将详细介绍...

    自定义圆形菜单

    首先,创建自定义圆形菜单的关键在于理解Android的视图系统。在Android中,View是所有用户界面元素的基础类,它负责绘制UI并在用户与屏幕交互时处理事件。为了创建一个圆形菜单,我们需要创建一个新的类,这个类将...

    自定义实现菜单渐变类

    本教程将探讨如何通过自定义实现菜单渐变类来为应用程序增添动态色彩效果。渐变色菜单能够提供更丰富的视觉体验,使得用户界面更具现代感和专业性。 首先,让我们理解“菜单”在编程中的概念。在软件或应用中,菜单...

    Android编程自定义菜单实现方法详解

    在Android应用开发中,自定义菜单是一种常见的需求,尤其是在设计具有独特交互体验的应用时。系统默认的菜单可能无法满足所有开发者的需求,比如在屏幕底部展示超过三个菜单项,或者需要特定的动画效果。在这种情况...

    Android编程实现自定义系统菜单背景的方法

    总的来说,自定义Android系统的菜单背景涉及到对菜单项的处理,可能包括创建自定义的LayoutInflater.Factory,或者通过主题和样式来全局调整。在实际开发中,根据项目需求和兼容性要求,选择最适合的方式进行自定义...

    android 弹出式窗口自定义菜单栏

    总的来说,自定义弹出式菜单栏是Android开发中的一个实用技巧,它可以帮助我们构建更加个性化的应用界面。通过深入理解`PopupWindow`和`Dialog`的工作原理,结合自定义布局和事件处理,我们可以创建出符合项目需求的...

    自定义菜单样式

    在Android应用开发中,自定义菜单样式是一项常用的技术,它能帮助开发者打造出独特且符合品牌风格的用户界面,提升用户体验。本教程将深入探讨如何在Android中实现自定义菜单样式的详细步骤,以及相关的源码解析。 ...

    android menu自定义菜单 Demo

    通过上述步骤,我们可以创建并自定义Android应用程序中的菜单。`DemoMenu`这个压缩包文件可能包含了实现以上功能的示例代码,包括Activity、菜单资源文件以及可能的自定义样式或工具类。研究这个Demo,开发者可以...

    android 底部弹出菜单(带透明背景)

    总结,创建一个带有透明背景的Android底部弹出菜单主要涉及以下几个步骤: 1. 设计菜单布局。 2. 实例化`PopupWindow`并设置透明背景。 3. 将`PopupWindow`显示在指定位置。 4. 绑定点击事件处理逻辑。 通过以上...

    android自定义弹出menu

    在Android开发中,自定义菜单(Menu)是一种常见的需求,它可以提供更为丰富的用户交互体验,尤其是在需要展现多种操作选项时。本示例“android自定义弹出menu”着重介绍了如何创建一个类似于QuickContactBadge的...

    Android自定义toolbar布局

    它的引入使得开发者可以自定义顶部栏,包括图标、文字、菜单项等,适用于各种Android版本,从API 7及以上都可以使用。 创建自定义`Toolbar`的第一步是在布局文件中添加`Toolbar`组件。在XML布局文件中,我们可以...

Global site tag (gtag.js) - Google Analytics