Android — Удалить стрелку раскрывающегося списка Spinner

Мне просто интересно, возможно ли вообще просто убрать стрелку раскрывающегося списка для счетчика? У меня есть нарисованная стрелка в фоновом макете для моего счетчика, однако стрелка системы по умолчанию появляется справа от счетчика, от которого я хотел бы избавиться.

Вот код spinner xml для моего макета активности

<Spinner
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinnerSelectStaff"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="18dp"
            android:layout_marginRight="18dp"
            android:gravity="center"
            android:dropDownSelector="@drawable/empty"/>

И мой собственный макет счетчика выглядит так:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_margin="5dp"
          android:gravity="center"
          android:textSize="20sp"
          android:background="@drawable/spinner_text_shape"
          android:drawableRight="@drawable/ic_keyboard_arrow_down_black_24dp"
          android:textColor="@color/primary_text" />

Спасибо!


person Metalor    schedule 02.06.2015    source источник
comment
Проверьте эту ссылку, может она поможет вам stackoverflow.com/questions/4058360/   -  person Zubair Akber    schedule 02.06.2015
comment
Не уверен, почему отрицательные голоса, я искал, как это сделать, в течение нескольких часов, прежде чем спросить.   -  person Metalor    schedule 02.06.2015
comment
Только что увидел ваш комментарий @ZubairAkber, огромное спасибо! Не уверен, как я это пропустил, обычно я профессионал в гугле. Еще раз спасибо :)   -  person Metalor    schedule 02.06.2015
comment
Добро пожаловать @Metalor ...   -  person Zubair Akber    schedule 02.06.2015


Ответы (4)


Это может помочь Вам

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style parent="@android:style/Widget.Spinner" name="SpinnerwithNoArrow">
        <item name="android:background">@android:drawable/edit_text</item>
    </style>
</resources>

Используйте этот стиль в своем счетчике

person Prabhuraj    schedule 02.06.2015
comment
это выглядит странно, если вы используете материальный дизайн... правильный ответ ниже - person kenyee; 28.07.2016

Фон @null в XML-файле макета также помогает, если вы не хотите объявлять определенный стиль:

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"/>
person Galya    schedule 29.01.2016
comment
Я был удивлен, что это делает это очень хорошо. - person Neri; 27.06.2017
comment
есть ли способ добиться этого программно? - person Mihir Patel; 20.03.2018
comment
@MihirPatel, Spinner — это View, поэтому вы можете попробовать spinner.setBackground(null) - person Galya; 20.03.2018
comment
Есть ли способ вернуть стрелку счетчика по умолчанию обратно после установки нулевого фона? - person Andriy Antoniv; 10.07.2019
comment
@AndriyAntoniv, вы можете программно сохранить его как переменную, прежде чем установить для фона значение null, и у вас будет исходный фон, чтобы использовать его, когда захотите. - person Galya; 09.12.2019
comment
@Galya На самом деле я пытался избежать сохранения значения по умолчанию в своей собственной переменной. ИМО, было бы намного лучше иметь какой-то метод, предоставленный Android, который может сбросить фоновое состояние Spinner по умолчанию. - person Andriy Antoniv; 17.03.2020

Пожалуйста, попробуйте этот простой способ:

android:background="@android:color/transparent"
person Nimisha V    schedule 16.05.2018
comment
просто и эффектно, красиво :) - person icecube; 10.04.2021

Оба ответа мне не помогли, поэтому вот действительно простое однострочное решение, которое сработало.

  //some spinner initialisation stuff->
mySpinner.setAdapter(adapter);

  //some spinner initialisation stuff->
mySpinner.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

Я не могу точно сказать, будет ли он работать только с макетом счетчика по умолчанию, но он хорошо работал с моим пользовательским, который я создал для других нужд.

person Nor Newman    schedule 05.01.2018