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上

原文地址:https://www.cnblogs.com/afluy/p/3411102.html