1

My spinner has a background:

<android.support.v7.widget.AppCompatSpinner
            android:id="@+id/jobTypeSpinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_spinner_dropdown_line" />

In API level 19, it has a very bad appearance, But if I don't set any background in XML its appearance will be good in API level 19 I want to remove the background programmatically but when I set the following code

 jobTypeSpinner.setBackgroundDrawable(null)
or
 jobTypeSpinner.setBackgroundColor(0)
or
 jobTypeSpinner.setBackgroundResource(0)

The dropdown icon will gone.
please help me to set default backgrand that has dropdown icon.

Dr.jacky
  • 3,341
  • 6
  • 53
  • 91
mohsen
  • 1,065
  • 16
  • 24

1 Answers1

1

Here is my solution:

Remove android:background="@drawable/ic_spinner_dropdown_line" from spinner.

<android.support.v7.widget.AppCompatSpinner
    android:id="@+id/jobTypeSpinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

In activity/fragment that use the spinner, I assume it's MainActivity.

class MainActivity : AppCompatActivity() {

    private lateinit var defaultSpinnerBackground: Drawable

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Save the default spinner background
        defaultSpinnerBackground = jobTypeSpinner.background

        // Set your custom background
        jobTypeSpinner.setBackgroundResource(R.drawable.ic_spinner_dropdown_line)
    }
}

Whenever you want to reset to default spinner background.

jobTypeSpinner.background = defaultSpinnerBackground
Son Truong
  • 13,661
  • 5
  • 32
  • 58