ANDROID笔记: ActionBar(二)之ActionBar Menu

ANDROID笔记: ActionBar(二)之ActionBar Menu

主类:

package com.example.android_actionbar;



import android.annotation.SuppressLint;

import android.app.ActionBar;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;



@SuppressLint("NewApi")

public class ActionBarActivity extends Activity {

    private ActionBar actionBar;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_actionbar);

        // 获取actionbar

        actionBar = getActionBar();



    }



    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // 加载Menu

        MenuInflater menuInflater = new MenuInflater(ActionBarActivity.this);

        menuInflater.inflate(R.menu.mymenu, menu);

        // 得到搜索的view

        View view = menu.findItem(R.id.se).getActionView();

        final EditText editText = (EditText) view.findViewById(R.id.edittext);

        Button button = (Button) view.findViewById(R.id.searchbtn);

        // 按钮的点击事件响应

        button.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(getApplicationContext(),

                        editText.getText().toString(), Toast.LENGTH_SHORT)

                        .show();



            }

        });

        return super.onCreateOptionsMenu(menu);

    }



    /**

     * 布局文件中定义的按钮动作函数

     * 

     * @param view

     */

    public void btnclick(View view) {

        switch (view.getId()) {

        case R.id.button1:

            actionBar.show();

            actionBar.setDisplayShowHomeEnabled(true);

            actionBar.setHomeButtonEnabled(true);

            actionBar.setDisplayShowTitleEnabled(true);



            break;

        case R.id.button2:

            // actionBar.hide();//将整个bar隐藏

            // 隐藏APP的icon和name

            actionBar.setDisplayShowHomeEnabled(false);

            actionBar.setHomeButtonEnabled(false);

            actionBar.setDisplayShowTitleEnabled(false);

            break;

        }

    }

}

/res/menu/mymenu.xml

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

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



    <item

        android:id="@+id/se"

        android:actionLayout="@layout/search"

        android:showAsAction="always"

        android:title="搜索"/>

    <item

        android:id="@+id/fontsize"

        android:icon="@drawable/menu"

        android:showAsAction="always|withText"

        android:title="设置字体大小">

        <menu>



            <!-- 单选 -->

            <group android:checkableBehavior="single" >

                <item

                    android:id="@+id/font10sp"

                    android:title="10sp">

                </item>

                <item

                    android:id="@+id/font20sp"

                    android:title="20sp">

                </item>

                <item

                    android:id="@+id/font30sp"

                    android:title="30sp">

                </item>

            </group>

        </menu>

    </item>

</menu>

/res/layout/search.xml

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

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >



    <EditText

        android:id="@+id/edittext"

        android:layout_width="100dp"

        android:layout_height="wrap_content" />



    <Button

        android:id="@+id/searchbtn"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="搜索" />



</LinearLayout>

主类布局文件:

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

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >



    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="btnclick"

        android:text="展示" />



    <Button

        android:id="@+id/button2"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="btnclick"

        android:text="隐藏" />



</LinearLayout>

PS:

android:actionLayout="@layout/search" 连接到另一个布局文件
android:showAsAction="always"            永久显示在ActionBar上

在menu布局xml文件中设置 android:showAsAction="always|withText"或android:showAsAction="always" 可以使item显示在actionbar上

当android:showAsAction="never"时,item不显示在item上

你可能感兴趣的:(Actionbar)