android - 将自定义 View 添加到工具栏

标签 android android-toolbar

我正在尝试向新工具栏 (Lollipop) 添加自定义 View 。但不知何故, View 被添加到工具栏下方。当我使用 actionBar.setCustomView 时它工作正常,但现在迁移到工具栏后,它不起作用。下面是代码。应该做哪些改变?

fragment :

    toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
    ((ActionBarActivity) getActivity()).setSupportActionBar(toolbar);

    toolbar.setTitle(getString(R.string.app));



    ActionBar actionBar = ((ActionBarActivity) getActivity())
            .getSupportActionBar();

    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

    LayoutInflater inflater = (LayoutInflater) getActivity()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    // inflate the view
    final View view = inflater.inflate(R.layout.actionbar_search, null);
    final ImageView searchIcon = (ImageView) view
            .findViewById(R.id.search_icon);
    final ClearableAutoCompleteTextView searchBox = (ClearableAutoCompleteTextView) view
            .findViewById(R.id.search_box);

    // start with the text view hidden in the action bar
    searchBox.setVisibility(View.INVISIBLE);
    searchIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            toggleSearch(false, view);
        }
    });

    searchBox.setOnClearListener(new OnClearListener() {

        @Override
        public void onClear() {
            toggleSearch(true, view);
        }
    });

    searchBox.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {


        }

    });

toolbar.addView(view);              
// actionBar.setCustomView(view); // This worked previously 
//((ActionBarActivity)getActivity()).getSupportActionBar().setCustomView(view); //doesnt work with toolbar

最佳答案

使用工具栏,我已经设法实现了这样的目标:

setSupportActionBar(toolbar);
View logo = getLayoutInflater().inflate(R.layout.view_logo, null);
toolbar.addView(logo);

或者您也可以将 View 添加到工具栏 xml,因为它只是一个 ViewGroup。这样您就可以在布局编辑器中进行预览。无需 java 代码。

关于android - 将自定义 View 添加到工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26907093/

相关文章:

android - 类型错误 : Cannot read property 'getPictures' of undefined

android - Android通知图标如何支持多种颜色(多于两种颜色)?

android - 使用 CoordinatorLayout 在滚动时隐藏工具栏

android - 是否有任何选项可以在工具栏右侧添加 TICK MARK?

android - 如何更改自定义操作栏上菜单图标的颜色?

java - 获取/使用单选按钮值android

Android list 权限外部存储

android - 在 Android 中检测捏合

android - fragment 中工具栏上的 setHomeButtonEnabled

android - 如何删除 Toolbar 和 TabLayout 之间的分隔线