【问题标题】:ActionBar with custom layout with custom menu item带有自定义菜单项的自定义布局的 ActionBar
【发布时间】:2013-12-18 08:31:38
【问题描述】:

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

我已经可以在中间制作 imageview 但问题是

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

但如果我将其设置为"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>

我该如何解决这个问题?

提前谢谢你

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    ActionBar 具有 customView 支持。不要使用onCreateOptionsMenu()R.menu.actionbar_right_icon。而是创建一个包含您绘制的所有视图的布局。

    你可以像下面那样做

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

    【讨论】:

    • 所以你的意思是我应该将两种布局结合在一起,只使用 setCustomView 对吗?但是我怎样才能将图像设置在中间:/无论如何谢谢你的提示:)
    • 你应该像这样给你的 custom_view 充气:custom_view = inflater.inflate(R.layout.custom_view);然后您可以使用 custom_view.findViewById(R.id.image); 找到图像;
    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多