studio icono example boton bar agregar android android-actionbar options android-menu

android - icono - Menú de opciones que no se muestra en ActionBar



menu overflow android studio (6)

Ok, probemos otra respuesta. Si , por algún motivo, Android decide no mostrar los elementos en la barra de acciones, entonces lo que estás viendo es de hecho el comportamiento correcto. Los elementos que no están en la barra de acciones se muestran en overflow.

Una de las razones por las que los elementos no se muestran en la barra de acciones es porque no tienen un ícono definido.

Defines un ícono, como esto,

android:icon="@drawable/ic_launcher"

y sospecho que este es el problema. El icono del iniciador tiene un tamaño diferente (más grande) que los elementos de la barra de acción (más pequeños). Intente definir el icono en el tamaño correcto y vea si se muestra.

http://developer.android.com/design/style/iconography.html

Editar: hay un paquete de íconos de la barra de acciones para que comiences y puedas probar para ver si funciona. Descárguelo y use eclipse para importar algún icono.

Quería mostrar el Menu en ActionBar usando ActionBarActivity .

Estoy recibiendo el menú de opciones al hacer clic en el botón de opciones en lugar de mostrar en la parte superior de la barra de acciones.

Necesito el menú de opciones en la parte superior en lugar de hacer clic en el menú de opciones de 2.3 en adelante

Mi código :

public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); actionBar.setSubtitle("mytest"); actionBar.setTitle("Testing"); getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_action, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_one: Toast.makeText(this, "clicked search", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() {} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } }

Mi archivo XML:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_item_one" android:icon="@drawable/ic_launcher" android:showAsAction="always" android:title="@string/action_settings"/> <item android:id="@+id/menu_item_two" android:icon="@drawable/ic_launcher" android:showAsAction="always" android:title="@string/action_settings"/> </menu>


Haz esto en tu oncreate ()

ActionBar actionBar = getActionBar(); actionBar.show();

Esto debería hacer lo que quieras. Barra de acciones


Intentalo:

Crear archivo XML en "../res/menu/menu_main.xml"

manu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:showAsAction="never" android:icon="@android:drawable/ic_menu_settings" android:title="@string/menu_settings"/> </menu>

La opción "nunca" en "showAsAction", importante, si pones esa opción, siempre aparece en ActionBar.

Entonces ahora debemos asociar esta opción en MainActivity.java (clase lo que quieras).

MainActivity.java

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

Ahora que definimos los elementos de nuestra barra de acción es saber cómo responder a las pulsaciones hechas por el usuario sobre ellos.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_settings: Log.i("ActionBar", "Settings!");; //open Activity,Fragments or other action return true; default: return super.onOptionsItemSelected(item); } }

Si tiene más opciones en su menú, solo agregue el elemento en XML menu_main.xml y en la clase principal agregue otro "caso".

Por ejemplo:

MainActivity.java

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_save: Log.i("ActionBar", "Save!");; //open Activity,Fragments or other action return true; case R.id.menu_settings: Log.i("ActionBar", "Settings!");; //open Activity,Fragments or other action return true; default: return super.onOptionsItemSelected(item); } }

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:showAsAction="never" android:icon="@android:drawable/ic_menu_settings" android:title="@string/menu_settings"/> <item android:id="@+id/menu_save" android:showAsAction="never" android:icon="@android:drawable/ic_menu_save" android:title="@string/menu_save"/> </menu>


No estoy 100% seguro, pero parece que el archivo XML del menú debe tener un menú . En el menú, agrega los artículos. Me gusta esto:

<menu xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_menu" > <item... <item... </menu>

Quizás esto funcione.

También hay algunas otras cosas para recordar en general. Android decide por sí mismo qué mostrar en la Barra de acciones (dependiendo de lo que se ajuste allí y otros parámetros). Lo que no cabe en ActionBar entra en el desbordamiento.


Pruebe con return super.onCreateOptionsMenu(menu); en lugar de return true en su método onCreateOptionsMenu acuerdo con el siguiente documento de Android ...

http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems

Según el documento anterior de Android ...

Las API de ActionBar se agregaron por primera vez en Android 3.0 (API nivel 11) pero también están disponibles en la biblioteca de soporte técnico para compatibilidad con Android 2.1 (API nivel 7) y superior. Entonces, si quieres ActionBar en Android 2.3, entonces debes usar la Biblioteca de soporte de Android .

Editar:

Su menú XML debería verse así:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok" android:title="@string/ok" yourapp:showAsAction="always"/> <item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel" android:title="@string/cancel" yourapp:showAsAction="always"/> </menu>

Reemplace yourapp con el nombre de su aplicación o cualquier espacio de nombres.