Cómo agregar botones como actualizar y buscar en la barra de herramientas en Android?


introduzca la descripción de la imagen aquí

He creado una barra de herramientas, pero cuando agrego elementos de menú en menu.xml siempre se muestra como un desbordamiento. ¿Cómo lo agrego por separado? Además el Título se muestra en el medio (verticalmente), ¿cómo lo muestro en la parte superior?

Menú.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.toolbar.MainActivity" >

       <item android:id="@+id/action_search"
          android:icon="@drawable/ic_launcher"
          android:title="@string/action_search"
          android:showAsAction="ifRoom"
          android:orderInCategory="1" 
          android:menuCategory="secondary"/>

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>

</menu>

Actividad principal.java

package com.example.toolbar;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
        setSupportActionBar(toolbar);
       // toolbar.setNavigationIcon(R.drawable.back);
        toolbar.setLogo(R.drawable.ic_launcher);
        //toolbar.setTitle("Title");
       // toolbar.setSubtitle("Subtitle");





    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.toolbar.MainActivity" >

     <android.support.v7.widget.Toolbar
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:id="@+id/my_awesome_toolbar"
         android:layout_width="fill_parent"
         android:layout_height="128dp"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
         android:background="?attr/colorPrimary"
         android:minHeight="?attr/actionBarSize"
         app:theme="@style/ActionBarThemeOverlay">
     </android.support.v7.widget.Toolbar>



</RelativeLayout>
Author: AMAN77, 2014-11-06

4 answers

OK, tengo los iconos porque escribí en el menú.xml android:showAsAction="ifRoom" en lugar de app:showAsAction="ifRoom" ya que estoy usando la biblioteca v7.

Sin embargo, el título está en el centro de la barra de herramientas extendida. Cómo hacer que aparezca en la parte superior?

 78
Author: kunal.c,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-31 13:37:20

Intenta hacer esto:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayShowTitleEnabled(false);

Y si hiciste tu barra de herramientas personalizada (que supongo que hiciste) entonces puedes usar la forma más simple posible para hacer esto:

toolbarTitle = (TextView)findViewById(R.id.toolbar_title);
toolbarSubTitle = (TextView)findViewById(R.id.toolbar_subtitle);
toolbarTitle.setText("Title");
toolbarSubTitle.setText("Subtitle");

Lo mismo ocurre con cualquier otra vista que pongas en tu barra de herramientas. Espero que ayude.

 5
Author: menilv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 14:23:58

Añadir esta línea en la parte superior:

"xmlns:app="http://schemas.android.com/apk/res-auto"

Y luego use:

app:showasaction="ifroom"

 3
Author: DishantPatel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-06 07:35:13

Para controlar la ubicación del título es posible que desee establecer una fuente personalizada como se explica aquí (por twaddington): Link

Luego para reubicar la posición del texto, en updateMeasureState() se agregaría p.baselineShift += (int) (p.ascent() * R); Del mismo modo en updateDrawState() añadir tp.baselineShift += (int) (tp.ascent() * R); Donde R es doble entre -1 y 1.

 0
Author: HaimS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:56