布局代码
示例代码,位于menu中:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
android:orderInCategory="100"
android:showAsAction="always"
android:title="SearchView"/>
<item
android:id="@+id/progress"
android:actionLayout="@layout/clock"
android:orderInCategory="100"
android:showAsAction="always"
android:title="clock"/>
</menu>
clock组件代码如下,位于layout中:
<AnalogClock
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
代码定义两个UI组件:search和AnalogClock
Activity代码
1.用getMenuInflater()装载
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
运行如下图:
无法达到预期效果
2.用new MenuInflater(this)装载
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflator = new MenuInflater(this);
//装填R.menu.my_menu对应的菜单,并添加到menu中
inflator.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
运行如下:
效果较好。
总结:如果想在ActionBar上显示图标,需要进行2步操作
1.android:showAsAction=”always”
2.MenuInflater inflator = new MenuInflater(this);