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上