我目前正在开发一个应用程序,其中我使用了一个经过大量修改的Split Action Bar.这是应用程序当前状态的链接:
您会注意到顶部有一个透明的操作栏,其中有一个自定义视图,底部有一个被黑客攻击的分割操作栏.底部视图实际上是一个单独的操作项,其中自定义视图已膨胀,showAlways = true.
目前我只支持SDK v15,我并不打算改变它,但是刚刚发布的Lollipop AppCompat库,我决定实现它,所以我可以在我的应用程序中获得一些非常棒的功能.
我已将主题更改为Theme.AppCompat.Light,而我的MainActivity现在扩展了ActionBarActivity而非Activity.
所有对getActionBar的引用现在都已切换到getSupportActionBar,只有这些更改,这就是我的活动现在的样子:
您会注意到我从设备监视器获得了一个UI转储,它将底部操作栏推入一个奇怪的空间并调用操作栏,并摆脱我的顶级自定义视图.
这是我设置操作栏的代码:
public void initializeActionBar(){ View customNav = LayoutInflater.from(this).inflate(R.layout.action_bar_top,null); actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.transparent_fifty_percent)); final PopupWindow window = addPopupWindow(); actionBarOptions = (ImageView)customNav.findViewById(R.id.options); actionBarOptions.setVisibility(View.GONE); actionBarOptions.setImageDrawable(app.svgToBitmapDrawable(getResources(),R.raw.vertical_ellipsis,app.scaleByDensity(48))); actionBarOptions.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { window.showAsDropDown(actionBarOptions,0); } }); TextView title = (TextView) customNav.findViewById(R.id.screen_title); Typeface font1 = Typeface.createFromAsset(getAssets(),"Merriweather-Italic.ttf"); title.setText("Parsley"); title.setTypeface(font1); actionBar.setCustomView(customNav); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayUselogoEnabled(false); } @Override public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.test,menu); LinearLayout fullMenu = (LinearLayout) menu.findItem(R.id.full_menu).getActionView(); ViewGroup.LayoutParams params; icon1 = (ImageView) fullMenu.findViewById(R.id.action_item1); params = icon1.getLayoutParams(); params.width = getResources().getDisplayMetrics().widthPixels / 4; params.height = (int) (48 * getResources().getDisplayMetrics().density); icon1.setImageDrawable(app.svgToBitmapDrawable(getResources(),R.raw.shopping_list_icon,app.scaleByDensity(32))); icon2 = (ImageView) fullMenu.findViewById(R.id.action_item2); icon3 = (ImageView) fullMenu.findViewById(R.id.action_item3); icon4 = (ImageView) fullMenu.findViewById(R.id.action_item4); icon2.setImageDrawable(app.svgToBitmapDrawable(getResources(),R.raw.recipe_Box_icon,app.scaleByDensity(32))); icon3.setImageDrawable(app.svgToBitmapDrawable(getResources(),R.raw.icon_search,app.scaleByDensity(32))); icon4.setImageDrawable(app.svgToBitmapDrawable(getResources(),R.raw.icon_add,app.scaleByDensity(32))); params = icon2.getLayoutParams(); params.width = getResources().getDisplayMetrics().widthPixels / 4; params.height = (int) (48 * getResources().getDisplayMetrics().density); params = icon3.getLayoutParams(); params.width = getResources().getDisplayMetrics().widthPixels / 4; params.height = (int) (48 * getResources().getDisplayMetrics().density); params = icon4.getLayoutParams(); params.width = getResources().getDisplayMetrics().widthPixels / 4; params.height = (int) (48 * getResources().getDisplayMetrics().density); if (!firstLoad) { setBottomActionBarActive(); setActiveTab(0); } optionsLoaded = true; return true; }
在我的活动中从onCreate调用initializeActionBar().我有什么想法我做错了吗?