我有一个MapView动作栏,由ActionBarSherlock提供动力.操作栏分开(在"窄"屏幕上)和重叠/半透明(android:windowActionBarOverlay为真).或多或少像Google地图应用.
现在我想在地图顶部推送视图,在屏幕底部仍保持在底部操作栏上方.我的问题在于我不知道底部操作栏的高度.坦率地说,我甚至无法找到一种方法来知道它是否被绘制.getHeight()似乎返回顶部操作栏的高度(或者它可能是两者的高度,但我仍然不知道底部操作栏是否存在.
请告诉我这些信息就在我面前!
我目前正在开发一个应用程序,其中我使用了一个经过大量修改的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, 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 …Run Code Online (Sandbox Code Playgroud) 我有一个带分割操作栏的应用程序加载一个动作菜单.
我更改了新工具栏的操作栏,并用独立模式中使用的其他工具栏替换了拆分操作栏:
Toolbar toolbarBottom = (Toolbar) findViewById(R.id.toolbarBottom);
toolbarBottom.inflateMenu(R.menu.ab_one_cam);
Run Code Online (Sandbox Code Playgroud)
如文档中所指定,操作菜单位于工具栏右侧的引脚:

但我希望图标在工具栏上居中,就像它在拆分操作栏上一样:

如何使操作菜单占用工具栏上的所有可用空间?
工具栏专用于此菜单,不会在其上添加任何其他内容.
回答
接受的答案链接指向拆分工具栏.如果像我这样你需要这个代码就足够了:
public class SplitToolbar extends Toolbar {
public SplitToolbar(Context context) {
super(context);
}
public SplitToolbar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SplitToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
if (child instanceof ActionMenuView) {
params.width = LayoutParams.MATCH_PARENT;
}
super.addView(child, params);
}
}
Run Code Online (Sandbox Code Playgroud)
android ×3