Adición de vista personalizada a una barra de herramientas
Estoy tratando de agregar una vista personalizada a la nueva barra de herramientas (Lollipop). Pero de alguna manera la vista se agrega por debajo de la barra de herramientas. Funcionaba bien cuando utilicé actionBar.setCustomView pero ahora después de migrar a la barra de herramientas, no funciona. A continuación se muestra el código. ¿Qué cambios se deben hacer?
Fragmento :
- ¿Cómo agregar un único elemento de menú a la barra de herramientas de android?
- La barra de estado no es transparente cuando se utiliza una nueva biblioteca de diseño de soporte
- AppBarLayout extrañamente toma espacio y empuja el contenido hacia abajo
- Animación de la barra de herramientas con LayoutTransition
- Cómo animar barras de herramientas superior e inferior (o cualquier otra vista) entrar / salir de la pantalla en desplazamiento en CoordinatorLayout?
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
- ¿Cómo configurar la altura de la barra de herramientas de Android?
- Adición de dos barras de herramientas AppCompat con diferentes temas
- CoordinatorLayout (AppbarLayout) no dibuja barra de herramientas correctamente
- Cambiar el color de la barra de herramientas en Appcompat 21
- Barra de herramientas no aparece en fragmento con google maps
- Cómo hacer que AppBarLayout desaparezca por completo con windowTranslucentStatus establecido en true
- Cómo agregar una imagen en la barra de herramientas
- ¿Cómo implementar WhatsApp como el diseño de materiales SearchView?
Con la barra de herramientas he conseguido lograr que así:
setSupportActionBar(toolbar); View logo = getLayoutInflater().inflate(R.layout.view_logo, null); toolbar.addView(logo);
O también puede agregar su vista a la barra de herramientas xml, ya que es sólo un ViewGroup. De esta manera tendrás la vista previa en el editor de diseño. No se requiere código java.
Funciona muy bien para mí.
LayoutInflater mInflater=LayoutInflater.from(context); View mCustomView = mInflater.inflate(R.layout.toolbar_custom_view, null); toolbar.addView(mCustomView);
Simplemente infle la vista que desea añadir pasando la vista de la barra de herramientas como segundo parámetro del método de inflado; De esta forma, la llamada a "addView" no es necesaria:
setSupportActionBar(toolbar); View logo = getLayoutInflater().inflate(R.layout.view_logo, toolbar);