Search code examples
javaandroidandroid-actionbarspinner

Place a Spinner in Action bar


My question is simple, how would you go about to set a Spinner/dropdown list in the Action bar (in place of the title)?

I know there are other similar questions on here but all the answers I could find were very old and used deprecated code or linked to some guide in the Android docs that isn't there anymore.


Solution

  • try with this one

    call this from activity on create method and implement AdapterView.OnItemSelectedListener also.

       String[] weeks = {"Sunday", "Monday", "Tuesday", "Wednesday", "thursday","Sunday"}
    
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.custom_app_bar_spinner);
    
        Spinner spinner = (Spinner) findViewById(R.id.spinnerMethodInterviews);
        Spinner spinnerSecond = (Spinner) findViewById(R.id.spinnerMethodSecond);
        ArrayAdapter<String>   spinnerAdapter = new ArrayAdapter(this,
                R.layout.custom_title, android.R.id.text1, weeks);
    
        spinnerAdapter.setDropDownViewResource(R.layout.cutom_spinner);
        spinner.setAdapter(spinnerAdapter);
        spinnerSecond.setAdapter(spinnerAdapter);
        spinner.setOnItemSelectedListener(this);
        spinnerSecond.setOnItemSelectedListener(this);
    

    main_Activity.xml

       <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <android.support.constraint.ConstraintLayout
        android:id="@+id/view_top"
        android:layout_width="0dp"
        android:layout_height="50dp"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@color/colorAccent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">
    
        <Spinner
            android:id="@+id/spinnerMethodInterviews"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            app:layout_constraintStart_toStartOf="parent"
            android:spinnerMode="dropdown"/>
    
        <Spinner
            android:id="@+id/spinnerMethodSecond"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:spinnerMode="dropdown"/>
    
    </android.support.constraint.ConstraintLayout>
    
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@+id/view_top"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        >
    </android.support.v7.widget.RecyclerView>
    
    </android.support.constraint.ConstraintLayout>
    

    custom_spinner.xml

       <CheckedTextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textColor="@android:color/white" />
    

    custom_title.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@android:id/text1"
    style="?attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textColor="@android:color/white" />