当前位置: 首页 > news >正文

Android学习:ActionBar活动条

 

菜单定义:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="@string/font_size"
        android:showAsAction="always|withText"
        android:icon="@drawable/font">
        <menu>
            <!-- 定义一组单选菜单项 -->
            <group android:checkableBehavior="single">
                <!-- 定义多个菜单项 -->
                <item
                    android:id="@+id/font_10"
                    android:title="@string/font_10"/>
                <item
                    android:id="@+id/font_12"
                    android:title="@string/font_12"/>
                <item
                    android:id="@+id/font_14"
                    android:title="@string/font_14"/>
                <item
                    android:id="@+id/font_16"
                    android:title="@string/font_16"/>
                <item
                    android:id="@+id/font_18"
                    android:title="@string/font_18"/>
            </group>
        </menu>
    </item>
    <!-- 定义一个普通菜单项 -->
    <item android:id="@+id/plain_item"
          android:showAsAction="always|withText"
          android:title="@string/plain_item">
    </item>
    <item android:title="@string/font_color"
          android:showAsAction="always"
          android:icon="@drawable/color">
        <menu>
            <!-- 定义一组允许复选的菜单项 -->
            <group>
                <!-- 定义三个菜单项 -->
                <item
                    android:id="@+id/red_font"
                    android:title="@string/red_title"/>
                <item
                    android:id="@+id/green_font"
                    android:title="@string/green_title"/>
                <item
                    android:id="@+id/blue_font"
                    android:title="@string/blue_title"/>
            </group>
        </menu>
    </item>
</menu>

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 定义一组单选菜单项目 -->
    <group android:checkableBehavior="single">
        <!-- 定义三个菜单项 -->
        <item
            android:id="@+id/red"
            android:title="@string/red_title"
            android:alphabeticShortcut="r"/>
        <item
            android:id="@+id/green"
            android:title="@string/green_title"
            android:alphabeticShortcut="g"/>
        <item
            android:id="@+id/blue"
            android:title="@string/blue_title"
            android:alphabeticShortcut="b"/>
    </group>
</menu>

 

界面定义:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15pt"
        android:text="可通过上下文菜单修改背景色"
        />
</LinearLayout>

字符串资源:

<resources>
    <string name="app_name">ActionItemTest</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="red_title">红色</string>
    <string name="blue_title">蓝色</string>
    <string name="green_title">绿色</string>
    <string name="font_size">字体大小</string>
    <string name="font_color">字体颜色</string>
    <string name="plain_item">普通菜单项</string>
    <string name="font_10">10号字体</string>
    <string name="font_12">12号字体</string>
    <string name="font_14">14号字体</string>
    <string name="font_16">16号字体</string>
    <string name="font_18">18号字体</string>
</resources>

代码:

package allegro.actionbartes;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private TextView txt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView) findViewById(R.id.txt);
        // 为文本框注册上下文菜单
        registerForContextMenu(txt);
    }
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflator = new MenuInflater(this);
        //装填R.menu.my_menu对应的菜单,并添加到menu中
        inflator.inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    // 创建上下文菜单时触发该方法
    @Override
    public void onCreateContextMenu(ContextMenu menu, View source,
                                    ContextMenu.ContextMenuInfo menuInfo)
    {
        MenuInflater inflator = new MenuInflater(this);
        //装填R.menu.context对应的菜单,并添加到menu中
        inflator.inflate(R.menu.context , menu);
        menu.setHeaderIcon(R.drawable.tools);
        menu.setHeaderTitle("请选择背景色");
    }
    // 上下文菜单中菜单项被单击时触发该方法
    @Override
    public boolean onContextItemSelected(MenuItem mi)
    {
        // 勾选该菜单项
        mi.setChecked(true);  //
        switch (mi.getItemId())
        {
            case R.id.red:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.RED);
                break;
            case R.id.green:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.GREEN);
                break;
            case R.id.blue:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.BLUE);
                break;
        }
        return true;
    }
    @Override
    // 菜单项被单击后的回调方法
    public boolean onOptionsItemSelected(MenuItem mi)
    {
        if(mi.isCheckable())
        {
            // 勾选该菜单项
            mi.setChecked(true);  //
        }
        //判断单击的是哪个菜单项,并有针对性地作出响应
        switch (mi.getItemId())
        {
            case R.id.font_10:
                txt.setTextSize(10 * 2);
                break;
            case R.id.font_12:
                txt.setTextSize(12 * 2);
                break;
            case R.id.font_14:
                txt.setTextSize(14 * 2);
                break;
            case R.id.font_16:
                txt.setTextSize(16 * 2);
                break;
            case R.id.font_18:
                txt.setTextSize(18 * 2);
                break;
            case R.id.red_font:
                txt.setTextColor(Color.RED);
                mi.setChecked(true);
                break;
            case R.id.green_font:
                txt.setTextColor(Color.GREEN);
                mi.setChecked(true);
                break;
            case R.id.blue_font:
                txt.setTextColor(Color.BLUE);
                mi.setChecked(true);
                break;
            case R.id.plain_item:
                Toast toast = Toast.makeText(MainActivity.this
                        , "您单击了普通菜单项" , Toast.LENGTH_SHORT);
                toast.show();
                break;
        }
        return true;
    }
}

 

 

相关文章:

  • 客户端码农学习ML —— Matplotlib基本用法
  • 1041. 考试座位号(15)
  • 在Ubuntu16.04系统为Apache服务器安装Let's Encrypt证书
  • web_reg_find函数检查包含中文字符时报错的解决方案
  • springcloud config+jdbc(mysql)来实现配置管理
  • 从零开始的Spring Session(一)
  • vim 入坑指南
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • saltstack安装
  • 徒手撸UI之DatePicker
  • 常用链接收藏
  • TPYBoard获取MicroPython提示
  • Esper复杂事务处理一小时入门
  • 第204天:js---重载和多态
  • 【资源共享】5G AP分析
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • bearychat的java client
  • ECMAScript入门(七)--Module语法
  • emacs初体验
  • GraphQL学习过程应该是这样的
  • IDEA常用插件整理
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • input的行数自动增减
  • Joomla 2.x, 3.x useful code cheatsheet
  • js算法-归并排序(merge_sort)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • php ci框架整合银盛支付
  • PHP CLI应用的调试原理
  • scala基础语法(二)
  • 欢迎参加第二届中国游戏开发者大会
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 用Visual Studio开发以太坊智能合约
  • ionic入门之数据绑定显示-1
  • 数据可视化之下发图实践
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • ()、[]、{}、(())、[[]]命令替换
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (3)STL算法之搜索
  • (30)数组元素和与数字和的绝对差
  • (function(){})()的分步解析
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (分布式缓存)Redis持久化
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (南京观海微电子)——I3C协议介绍
  • (四)JPA - JQPL 实现增删改查
  • (一)Linux+Windows下安装ffmpeg
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core 项目指定SDK版本
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 读取 JSON格式的数据
  • .NET中的十进制浮点类型,徐汇区网站设计