gpt4 book ai didi

android - 具有自定义布局和自定义菜单项的 ActionBar

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:19 25 4
gpt4 key购买 nike

我想通过将 ImageView 放在中间来制作自定义操作栏,并在操作栏的右侧有另一个带有一些信息的图标,如下所示:

我已经可以在中间创建 imageview 但问题是

  • 当我在 onCreateOptionMenu() 中扩展布局并设置 showAsAction="always" 时,右侧的 View 像这样占用操作栏的所有空间

但是如果我将它设置为 "never" 中间的图片会显示但是菜单项会消失

这是我的代码:

private void setActionBar(){
actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);

LayoutInflater linflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = linflater.inflate(R.layout.actionbar_layout, null);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
view.setLayoutParams(lp);
actionBar.setCustomView(view);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.actionbar_right_icon, menu);
MenuItem menuItem = menu.findItem(R.id.user_info);

View rightIcon = menuItem.getActionView();
RelativeLayout rightIconLayout = (RelativeLayout) rightIcon.findViewById(R.id.actionbar_right_icon);
TextView user = (TextView) rightIconLayout.findViewById(R.id.actionbar_user);
TextView id = (TextView) rightIconLayout.findViewById(R.id.actionbar_id);

user.setText("User:test");
id.setText("ID:xxxxx");

return true;
}

菜单/actionbar_right_icon

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
>
<item
android:id="@+id/user_info"
android:actionLayout="@layout/actionbar_right_icon_layout"
android:icon="@drawable/user_icon"
android:showAsAction="always"

/>
</menu>

我该如何解决这个问题?

提前谢谢你

最佳答案

ActionBar 支持自定义 View 。不要使用 onCreateOptionsMenu()R.menu.actionbar_right_icon。相反,创建一个布局来采用您绘制的所有 View 。

你可以像下面那样做

LayoutParams layout_params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
getSupportActionBar().setCustomView(custom_view, layout_params);

关于android - 具有自定义布局和自定义菜单项的 ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20653085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com