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.
Es posible que esto se deba a que su dispositivo tiene un botón de opciones que abriría el menú, por lo que Android no dibujará el icono del iniciador.