青玄 发表于 2014-11-22 19:03:19

android学习之menu与ActionBar

本案例主要实现的是在标题栏上面添加菜单以及标题栏的隐藏:
1.布局文件的配置:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/hello_world" />

    <Button
      android:id="@+id/show"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/textView1"
      android:layout_below="@+id/textView1"
      android:layout_marginTop="37dp"
      android:text="显示ActionBar"
      android:onClick="show"
      />

    <Button
      android:id="@+id/hide"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/show"
      android:layout_below="@+id/show"
      android:layout_marginTop="23dp"
      android:onClick="hide"
      android:text="隐藏ActionBar" />

</RelativeLayout>2.my_menu.xml文件的配置:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   
<item android:title="菜单"
         android:showAsAction="always|withText"
         
       >
       <menu>
            <group android:checkableBehavior="single">
                  <item android:id="@+id/font_10"
                        android:title="选择联系人" />
                  
                   <item android:id="@+id/font_12"
                         android:title="选择短信" />
                  
                  <item android:id="@+id/font_14"
                        android:title="我的音乐" />
                  
                  <item android:id="@+id/font_16"
                        android:title="我的QQ" />
                     
                  <item android:id="@+id/font_18"
                        android:title="我的服务" />
                        
            </group>
       </menu>
   </item>
   
   <item
      android:id="@+id/plain_item"
      android:showAsAction="always|withText"
      android:title="我的时钟" />
   
   <item
       android:id="@+id/font_color"
       android:showAsAction="always|withText"
       android:title="选择颜色"
       >
       <menu>
         
         <group>
               
               <item android:id="@+id/red_font" android:title="红色"/>
               
                <item android:id="@+id/green_font" android:title="绿色"/>
               
               <item android:id="@+id/bule_font" android:title="蓝色"/>
         </group>
       </menu>
      
   </item>
</menu>

3、activity程序功能的实现:


package com.example.actionbar_test;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

        private ActionBar actionBar;
        private TextView tV;
       
        @SuppressLint("NewApi")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                this.tV = (TextView) this.findViewById(R.id.textView1);
                actionBar = this.getActionBar();
               
                actionBar.setDisplayShowHomeEnabled(true);
                actionBar.setHomeButtonEnabled(true);
                actionBar.setDisplayHomeAsUpEnabled(true);
                actionBar.setDisplayShowTitleEnabled(true);
        }

        //点击子项
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.my_menu, menu);
                return true;
        }

        /**
       * onOptionsItemSelected
       * item.getItemId()获得子菜单项的id并更改其文字的大小
       */
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                // TODO Auto-generated method stub
                switch(item.getItemId())
                {
                case R.id.font_10:
                        tV.setTextSize(10);
                        break;
                case R.id.font_12:
                        this.tV.setTextSize(12);
                        break;
                case R.id.font_14:
                       
                        this.tV.setTextSize(14);
                        break;
                case R.id.font_16:
                        this.tV.setTextSize(16);
                        break;
                case R.id.font_18:
                        this.tV.setTextSize(15);
                        break;
                case R.id.plain_item:
                        this.finish();
                        break;
                }
                return super.onOptionsItemSelected(item);
        }

        //显示ActionBar按钮的方法
        public void show(View v)
        {
                actionBar.show();
        }
        //隐藏ActionBar按钮的方法
        public void hide(View v)
        {
                actionBar.hide();
        }
}



页: [1]
查看完整版本: android学习之menu与ActionBar