Actionbar 切换布局
来源:互联网 发布:耳机声音放大器软件 编辑:程序博客网 时间:2024/05/29 13:08
一.ActionBar动态切换布局
A.非兼容下的ActionBar
public class MainActivity extends Activity
android.app.ActionBar actionBar=this. getActionBar();
若actionBar报空指针异常 请见 http://blog.csdn.net/yueqinglkong/article/details/39577749
value 下的Styles
<resources> <!-- Base application theme. --> <!--<style name="AppTheme" parent="Theme.AppCompat.Light">--> <style name="AppTheme" parent="@android:style/Theme.Holo.Light"> <!-- Customize your theme here. --> </style>
B.android.support.v7.app.ActionBar;
public class MainActivity extends AppCompatActivity
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
<style name="AppTheme" parent="Theme.AppCompat.Light">
下面实现布局切换:
btn_ActionBarA.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isEditingMode=false; invalidateOptionsMenu(); }});btn_ActionBarB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isEditingMode=true; Log.i("MainActivity", "ActionBarB clicked"); invalidateOptionsMenu(); }});
@Overridepublic boolean onPrepareOptionsMenu(Menu menu) { Log.i("MainAcitvity", "onPrepareOptionsPanel"); MenuInflater inflater = getMenuInflater(); menu.clear(); if (this.isEditingMode) { inflater.inflate(R.menu.actionbar2, menu); } else { inflater.inflate(R.menu.actionbar, menu); } return super.onPrepareOptionsMenu(menu);}
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { Log.i("MainAcitvity", "onCreateOptionsMenu"); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbar, menu); MenuItem searchItem = menu.findItem(R.id.action_search); MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { Toast.makeText(MainActivity.this, "Expand", Toast.LENGTH_LONG); return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { Toast.makeText(MainActivity.this, "Collapse", Toast.LENGTH_LONG); return true; } }); return super.onCreateOptionsMenu(menu);}
onCreateOptionsMenu和onPrepareOptionsMenu的差別在哪呢?
在做菜单的功能,发现,菜单越来越多,后来仔细看了他们的区别,如下:
但是onCreateOptionsMenu和onPrepareOptionsMenu的差別在哪呢?
android中可以重写activity的两个方法进行创建菜单:onPrepareOptionsMenu(Menu menu),onCreateOptionsMenu。
两种方法的区别是,前者是每次点击menu键都会重新调用,所以,如果菜单需要更新的话,就用此方法。而后者只是在activity创建的时候执行一次。
只會呼叫一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!
onPrepareOptionsMenu
onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
只要按一次menu按鍵,就會呼叫一次。
所以你會發現每次只要按一次menu按鍵,
menu選單就會多兩個(因為我們預設是兩個)
你可以利用onPrepareOptionsMenu來做update menu狀態的動作
如果你要把menu現有的option清空,就是下面那行CODE
menu.clear();
还有,在fragment中的onCreateOptionsMenu和Activity中的参数不同的,多了个MenuInflater,所以在fragment中调用MenuInflater的时候,要这么调用:
MenuInflater inflater = this.getActivity().getMenuInflater();
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// 在onCreateOptionsMenu()之前必须在onCreate中调用setHasOptionsMenu(true)
inflater.inflate(R.menu.menu_three, menu);
super.onCreateOptionsMenu(menu, inflater);
}
C:大早上搜索资料发现更为逆天的方式
http://blog.csdn.net/xyz_lmn/article/details/12754785
先更到这
- Actionbar 切换布局
- ActionBar切换ViewPager
- android自定义actionBar布局
- layout布局覆盖ActionBar
- layout布局覆盖ActionBar
- Android ActionBar 自定义布局
- ActionBar自定义布局
- 自定义Dialog&actionbar布局
- 自定义ActionBar布局
- 引入布局+隐藏ActionBar
- 切换Fragment时改变ActionBar
- 从ActionBar切换到toolBar
- 布局--布局切换
- 定义ActionBar的自定义布局
- 自定义actionbar布局,实现布局复用
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
- Android ActionBar中进行Fragment切换
- [Centos]编译安装apache 2.4
- Android初学习 - Fragment解析03
- 酒与污水定律
- 网络负载问题
- python unittest源码解析三----loader.py之_get_name_from_path(self, path)
- Actionbar 切换布局
- 在数组中,插入一个数,并输出。
- 求一个字符串中连续出现次数最多的子串
- Android layout布局属性、标签属性
- 个性化WinPE封装方法----制作过程需要了解的“命令”
- UITabBarController 【标签控制器】自己的见解
- 测试能否对标准输入设置偏移量
- 开通CSDN学院视频课程——小飞鱼通达OA工作流设计制作视频课程
- ctags 安装