Android(3.0,level 11)工具栏ActionBar——菜单

在上一篇博客中,已经简单介绍了ActionBar的一个常用控件SearchView,在本篇博文中,我将给大家介绍另一个常用控件:菜单。
系统运行效果图:


实现思路:

  1. 重写onCreateOptionsMenu;
  2. 构建MenuItem;
  3. 为MenuItem添加事件。
在正式展示代码之前,先介绍showAsAction属性。该属性定义了菜单的显示方式。包括ifRoom等5个属性:
  1. ifRoom:如果ActionBar还有空间,则显示其中;
  2. withText:显示标题,由android:title设置;
  3. never:从不显示;
  4. always:一直显示;
  5. collapseActionView。
通过上述几个属性,可以方便的控制菜单的显示状态。
以下部分就是用代码和引用xml两种形式,将菜单展示在ActionBar上:
/**
 * ActionBar菜单(自定义)
 * 
 * @author 小孩子a
 * 
 * */
public class ActionBar_ShowAsAction extends Activity {

	private TextView mTV;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.actionbar_showasaction);
		mTV = (TextView) findViewById(R.id.ab_saa_result);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// addMenuFromCode(menu);
		addMenuFromXML(menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		mTV.setText(item.getTitle());
		return super.onOptionsItemSelected(item);
	}

	/**
	 * 通过代码添加菜单项
	 * */
	private void addMenuFromCode(Menu menu) {
		MenuItem compose = menu.add("edit");
		MenuItem refresh = menu.add("refresh");
		MenuItem search = menu.add("search");
		MenuItem share = menu.add("share");

		compose.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		compose.setIcon(R.drawable.ic_compose);
		refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		refresh.setIcon(R.drawable.ic_refresh);
		search.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		search.setIcon(R.drawable.ic_search);
		share.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		share.setIcon(R.drawable.ic_title_share_default);
	}

	/**
	 * 通过XML添加菜单项
	 * */
	private void addMenuFromXML(Menu menu) {
		getMenuInflater().inflate(R.menu.menu_ab_saa, menu);

		MenuItem edit = menu.findItem(R.id.ab_saa_edit);
		MenuItem refresh = menu.findItem(R.id.ab_saa_refresh);
		MenuItem find = menu.findItem(R.id.ab_saa_find);
		MenuItem share = menu.findItem(R.id.ab_saa_share);

		edit.setIcon(R.drawable.ic_compose);
		refresh.setIcon(R.drawable.ic_refresh);
		find.setIcon(R.drawable.ic_search);
		share.setIcon(R.drawable.ic_title_share_default);
	}

}
其中,menu_ab_saa.xml文件组成如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/ab_saa_edit"
        android:enabled="true"
        android:showAsAction="ifRoom|withText"
        android:title="@string/ab_edit"
        android:visible="true">
    </item>
    <item
        android:id="@+id/ab_saa_refresh"
        android:enabled="true"
        android:showAsAction="ifRoom|withText"
        android:title="@string/ab_refesh"
        android:visible="true">
    </item>
    <item
        android:id="@+id/ab_saa_find"
        android:enabled="true"
        android:showAsAction="collapseActionView"
        android:title="@string/ab_find"
        android:visible="true">
        <menu>
            <group android:id="@+id/group1" >
                <item
                    android:id="@+id/item1"
                    android:icon="@drawable/ic_search"
                    android:title="@string/ab_sm_saa_findqq"/>
            </group>
            <group android:id="@+id/group2" >
                <item
                    android:id="@+id/item2"
                    android:icon="@drawable/ic_search"
                    android:title="@string/ab_sm_saa_findqq"/>
            </group>
        </menu>
    </item>
    <item
        android:id="@+id/ab_saa_share"
        android:enabled="true"
        android:showAsAction="collapseActionView"
        android:title="@string/ab_share"
        android:visible="true">
        <menu>
            <item
                android:id="@+id/sharebyqq"
                android:showAsAction="ifRoom"
                android:title="@string/ab_sm_saa_shareqq"/>
            <item
                android:id="@+id/sharebyweixin"
                android:showAsAction="ifRoom"
                android:title="@string/ab_sm_saa_sharebywinxin"/>
        </menu>
    </item>

</menu>
xml中的图片以及文字引用,可自行找资源文件代替。
通过上述操作,即可实现在ActionBar中添加菜单的效果。由于写字功力不够,有些内容不清楚的,可以随时留言,嘿嘿~

PS:最近在弄Android增量更新的内容。目前已经做好例子,在以后的博文中,我会将我的成果分享出来~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android中使用约束布局来创建工具栏,可以按照以下步骤操作: 1. 在XML布局文件中创建一个约束布局容器作为根布局。 2. 在约束布局容器中添加一个Toolbar工具栏控件,并设置其id和高度。 3. 在Toolbar控件下方添加一个View控件,并设置其高度为0dp。 4. 使用约束布局的约束属性将Toolbar控件和View控件进行约束,使得Toolbar控件在顶部居中显示,并且View控件在Toolbar控件下方并且占据剩余空间。 以下是一个示例代码: ``` <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <View android:id="@+id/view" android:layout_width="0dp" android:layout_height="0dp" android:background="?android:attr/windowBackground" app:layout_constraintTop_toBottomOf="@id/toolbar" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> ``` 在这个布局中,Toolbar控件被设置为根布局的顶部,并且View控件被约束在Toolbar控件下方并且占据剩余空间。你可以根据自己的需求对Toolbar和View进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值