将自定义视图添加到工具栏

我正在尝试添加一个自定义视图到新的工具栏(棒棒糖)。 但不知何故,视图被添加到工具栏下方。 当我使用actionBar.setCustomView工作正常,但现在迁移到工具栏后,它不起作用。 下面是代码。 应该做什么改变?

片段:

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 

Solutions Collecting From Web of "将自定义视图添加到工具栏"

使用工具栏,我已经设法达到这样的效果:

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

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

对我很好。

 LayoutInflater mInflater=LayoutInflater.from(context); View mCustomView = mInflater.inflate(R.layout.toolbar_custom_view, null); toolbar.addView(mCustomView); 

只需要膨胀的视图,你想添加通过工具栏视图作为膨胀方法的第二个参数; 用这种方法调用“addView”是不必要的:

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