ActionBar Spinner





MyActivity.java
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import android.widget.Toast;


public class MyActivity extends ActionBarActivity  implements ActionBar.OnNavigationListener {

    TextView texto;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        texto = (TextView) findViewById(R.id.texto);

        ActionBar actionBar = getSupportActionBar();

      

        //crear el spinner
        SpinnerAdapter adapter = ArrayAdapter.createFromResource(this, R.array.lista, android.R.layout.simple_spinner_dropdown_item);
        actionBar.setListNavigationCallbacks(adapter, this);

        //mostrar el spinner
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    }


    @Override
    public boolean onNavigationItemSelected(int i, long l) {
        switch (i) {
            case 0:
                texto.setText("Opcion seleccionada:\n\nLunes");
                break;
            case 1:
                texto.setText("Opcion seleccionada:\n\nMartes");
                break;
            case 2:
                texto.setText("Opcion seleccionada:\n\nMiercoles");
                break;
            case 3:
                texto.setText("Opcion seleccionada:\n\nJueves");
                break;
            case 4:
                texto.setText("Opcion seleccionada:\n\nViernes");
                break;
            case 5:
                texto.setText("Opcion seleccionada:\n\nSabado");
                break;
            case 6:
                texto.setText("Opcion seleccionada:\n\nDomingo");
                break;
        }
        return false;
    }
}

activity_my.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=".MyActivity">

    <TextView
        android:text="hola"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/texto"
        android:textSize="40dp" />

</RelativeLayout>

strings.xml (carpeta: value)
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Spinner</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    
        <string-array name="lista">
            <item>Lunes</item>
            <item>Martes</item>
            <item>Miercoles</item>
            <item>Jueves</item>
            <item>Viernes</item>
            <item>Sabado</item>
            <item>Domingo</item>
        </string-array>
    


</resources>

style.xml (carpeta: value)
   <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
    </style>

5 comentarios:

  1. Como se hace para abrir una activity?

    case 3:
    Intent i;
    Intenti = new Intent(this, Hello.class);
    startActivity(i);
    break;

    esto no me funciona. Gracias

    ResponderEliminar
    Respuestas
    1. Si estas en un activity, podrías cambiar por el "this" por el "getApplicationContext()" y si es un fragment por un "getActivity()"
      sino es eso, probablemente te falta declarar los activities en el AndroidManifest
      Espero haber sido de ayuda.

      Eliminar
    2. Funcionando, muchisimas gracias Ramiro, te admiro.

      Eliminar
  2. Disculpe una pregunta, como puedo cambiar el color del texto del spinner...! el problema es que el spinner lo estoy creando en un fragment y no puedo aplicar estilos.

    Gracias de antemano.

    ResponderEliminar
  3. Hola Ramiro, acabo de encontrar tu blog, muy útil, ¿me podrías ayudar?, cómo podría hacer para que el spiner no salga en el encabezado sino dentro de la ventana, gracias.

    ResponderEliminar