我正在尝试将自定义视图添加到新工具栏(Lollipop)。但不知何故,视图会添加到工具栏下方。我使用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
答案 0 :(得分:42)
使用工具栏我已经成功实现了这样:
setSupportActionBar(toolbar);
View logo = getLayoutInflater().inflate(R.layout.view_logo, null);
toolbar.addView(logo);
或者您也可以将视图添加到工具栏xml,因为它只是一个ViewGroup。这样您就可以在布局编辑器中进行预览。不需要java代码。
答案 1 :(得分:9)
非常适合我。
LayoutInflater mInflater=LayoutInflater.from(context);
View mCustomView = mInflater.inflate(R.layout.toolbar_custom_view, null);
toolbar.addView(mCustomView);
答案 2 :(得分:2)
通过工具栏视图作为inflate方法的第二个参数,只需要添加要添加的视图;通过这种方式调用&#34; addView&#34;没有必要:
setSupportActionBar(toolbar);
View logo = getLayoutInflater().inflate(R.layout.view_logo, toolbar);