Intereting Posts
Android: изменение цвета фона фрагмента Как я могу получить доступ к моему локальному хосту с моего устройства Android? OkHttp / Retrofit по умолчанию Есть ли шаблон поиска ресурса строки Enum для Android? Программное включение / отключение поворотов экрана в Android Как настроить карту Android sdk v2 для использования разных ключей для производства и разработки? Как установить тему для приложения, чтобы избежать неправильных переходов цвета? Как установить отображение TimePicker с форматом 24h Создание Android-сборки с помощью Gitlab CI Websockets против GCM под Android: использование батареи? Установите блокировку экрана на «Нет» программно? Ошибка кинжала 2: зависимость «не может быть предоставлена ​​без конструктора @Inject», в то время как она фактически аннотируется с помощью @Inject OnCreate not called Andengine low FPS на некоторых телефонах Java.lang.RuntimeException: eglSwapBuffers не удалось: EGL_SUCCESS

Как установить стрелку вниз в spinner?

Я попытался установить spinner с помощью стрелки вниз, но я не мог исправить это, может ли кто-нибудь помочь мне с этим? Я прикрепил исходный код. Я пробовал с приведенной ниже ссылкой, но не смог исправить проблему. Http://www.mokasocial.com/2011/03/easily-create-a-default-custom-styled-spinner-android/

Мой файл класса:

import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Toast; public class topup extends Activity { Spinner spinner,spin1,spin2,spin3; EditText ed,ed1; Button btn; List<String> list, list1,list2,list3; private String[] countries_list={"01","02","03","04","05","06","07","08","09","10","11","12"}; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.topup); spinner = (Spinner) findViewById(R.id.spinner1); spin1= (Spinner) findViewById(R.id.spinner2); spin2= (Spinner) findViewById(R.id.spinner3); spin3= (Spinner) findViewById(R.id.spinner4); ed = (EditText) findViewById(R.id.editText3); list = new ArrayList<String>(); list.add(""); list.add("select"); list.add("01"); list.add("02"); list.add("03"); list.add("04"); list.add("05"); list.add("06"); list.add("07"); list.add("08"); list.add("09"); list.add("10"); list.add("11"); list.add("12"); ArrayAdapter<String> adp = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, list); //adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adp); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { //@Override public void onItemSelected(AdapterView<?> parent, View arg1,int arg2, long arg3) { // TODO Auto-generated method stub String item = spinner.getItemAtPosition(1).toString(); //Toast.makeText(spinner.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show(); String ss=spinner.getSelectedItem().toString(); String } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); 

Мой XML-файл:

 <?xml version="1.0" encoding="UTF-8"?> <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" android:background="@drawable/back1" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:background="@drawable/red"> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="match_parent" android:dropDownWidth="fill_parent" /> </LinearLayout> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/linearLayout1" android:layout_alignRight="@+id/linearLayout1" android:layout_below="@+id/linearLayout1" android:layout_marginTop="25dp" android:background="@drawable/red" android:ems="10" android:hint="enter card number" > <requestFocus /> </EditText> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/editText1" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="33dp" android:orientation="horizontal" android:background="@drawable/red"> <Spinner android:id="@+id/spinner3" android:layout_width="72dp" android:layout_height="wrap_content" /> <Spinner android:id="@+id/spinner2" android:layout_width="72dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/editText2" android:layout_width="22dp" android:layout_height="match_parent" android:layout_weight="0.18" android:ems="10" android:hint="enter cvv" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignRight="@+id/linearLayout2" android:layout_below="@+id/linearLayout2" android:layout_marginTop="26dp" android:orientation="vertical" android:background="@drawable/red" > </LinearLayout> <Spinner android:id="@+id/spinner4" android:layout_width="15dp" android:layout_height="18dp" android:layout_alignBottom="@+id/linearLayout3" android:layout_alignLeft="@+id/linearLayout3" android:layout_alignRight="@+id/linearLayout3" android:layout_alignTop="@+id/linearLayout3" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/linearLayout3" android:layout_marginTop="18dp" android:text="Add Amount" android:background="@drawable/buttonsty"/> </RelativeLayout> 

Solutions Collecting From Web of "Как установить стрелку вниз в spinner?"

Скопируйте и вставьте этот xml вместо xml

 <?xml version="1.0" encoding="UTF-8"?> <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" android:background="@drawable/back1" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:background="@drawable/red"> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="match_parent" android:dropDownWidth="fill_parent" android:background="@android:drawable/btn_dropdown" /> </LinearLayout> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/linearLayout1" android:layout_alignRight="@+id/linearLayout1" android:layout_below="@+id/linearLayout1" android:layout_marginTop="25dp" android:background="@drawable/red" android:ems="10" android:hint="enter card number" > <requestFocus /> </EditText> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/editText1" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="33dp" android:orientation="horizontal" android:background="@drawable/red"> <Spinner android:id="@+id/spinner3" android:layout_width="72dp" android:layout_height="wrap_content" android:background="@android:drawable/btn_dropdown" /> <Spinner android:id="@+id/spinner2" android:layout_width="72dp" android:layout_height="wrap_content" android:background="@android:drawable/btn_dropdown" /> <EditText android:id="@+id/editText2" android:layout_width="22dp" android:layout_height="match_parent" android:layout_weight="0.18" android:ems="10" android:hint="enter cvv" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignRight="@+id/linearLayout2" android:layout_below="@+id/linearLayout2" android:layout_marginTop="26dp" android:orientation="vertical" android:background="@drawable/red" > </LinearLayout> <Spinner android:id="@+id/spinner4" android:layout_width="15dp" android:layout_height="18dp" android:layout_alignBottom="@+id/linearLayout3" android:layout_alignLeft="@+id/linearLayout3" android:layout_alignRight="@+id/linearLayout3" android:layout_alignTop="@+id/linearLayout3" android:background="@android:drawable/btn_dropdown" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/linearLayout3" android:layout_marginTop="18dp" android:text="Add Amount" android:background="@drawable/buttonsty"/> </RelativeLayout> 

В ответ на другой ответ меня спросили, как я изменил значок spinner, чтобы получить что-то вроде этого:

Один довольно простой способ – использовать настраиваемый макет элемента :

 Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, R.layout.view_spinner_item, ITEMS ); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); 

В res/layout/view_spinner_item.xml определите TextView с android:drawableRight указывающий на нужный значок (наряду с любыми настройками на размер текста, paddings и т. Д., Если хотите):

 <?xml version="1.0" encoding="utf-8"?> <!-- Custom spinner item layout --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerItemStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textSize="@dimen/text_size_medium" android:drawablePadding="@dimen/spacing_medium" android:drawableRight="@drawable/ic_arrow_down" /> 

(Для открытого состояния просто используйте android.R.layout.simple_spinner_dropdown_item или аналогичным образом создайте настраиваемый макет, если вы хотите настроить все аспекты вашего счетчика).

Чтобы получить фон и цвета, выглядящие красиво, установите android:background Spinner android:background and android:popupBackground как показано в этом другом вопросе . И если вы задавались вопросом о пользовательском шрифте на скриншоте выше, вам понадобится пользовательский SpinnerAdapter .

В основном нужно создать собственный фон для счетчика. Это должно быть примерно так:

spinner_background.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <layer-list> <item> <color android:color="@android:color/white"/> </item> <item> <bitmap android:gravity="center_vertical|right" android:src="@drawable/ic_arrow_drop_down_black_24dp"/> </item> </layer-list> </item> </selector> 

Затем создайте пользовательский стиль для вашего счетчика, где вы указываете указанный выше селектор в качестве фона:

 <style name="Widget.App.Spinner" parent="@style/Widget.AppCompat.Spinner"> <item name="overlapAnchor">true</item> <item name="android:background">@drawable/spinner_background</item> </style> 

И, наконец, в вашей теме приложения вы должны переопределить два атрибута, если хотите, чтобы их применяли по всему вашему приложению:

 <item name="spinnerStyle">@style/Widget.App.Spinner</item> <item name="android:spinnerStyle">@style/Widget.App.Spinner</item> 

И это в значительной степени.

Один простой способ – обернуть свой Spinner + Drop Down Arrow Image внутри макета. Установите фон Spinner как прозрачный, чтобы значок стрелки по умолчанию был скрыт. Что-то вроде этого:

  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/background" android:orientation="horizontal"> <Spinner android:id="@+id/spinner" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="4" android:gravity="center" android:background="@android:color/transparent" android:spinnerMode="dropdown" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:onClick="showDropDown" android:src="@drawable/ic_chevron_down_blue" /> </LinearLayout> 

Здесь background.xml является выделенным для создания фона типа коробки.

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@android:color/transparent" /> <corners android:radius="2dp" /> <stroke android:width="1dp" android:color="#BDBDBD" /> </shape> 1 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@android:color/transparent" /> <corners android:radius="2dp" /> <stroke android:width="1dp" android:color="#BDBDBD" /> </shape> 

Вышеприведенный код создает этот тип Spinner и значок.

Spinner с пользовательской стрелкой вниз

Установите изображение стрелки раскрывающегося списка, чтобы он вращался следующим образом:

 <Spinner android:id="@+id/Exam_Course" android:layout_width="320dp" android:background="@drawable/spinner_bg" android:layout_height="wrap_content"/> 

Здесь андроид: background = "@ drawable / spinner_bg" spinner_bg – это изображение со стрелкой вниз.

  <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="16dp" android:paddingLeft="10dp" android:spinnerMode="dropdown" /> 

Прикрепите стиль Spinner с помощью Java-кода:

Во-первых, вам нужен файл макета, например:

 <?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="none" android:minHeight="?android:attr/listPreferredItemHeight" /> 

Назовите его spinner_item.xml и поместите его в папку res / layouts.

Затем создайте String ArrayList и поместите в него все параметры Spinner:

 ArrayList<String> spinnerArray = new ArrayList<String>(); spinnerArray.add("Item No. 1"); spinnerArray.add("Item No. 2"); spinnerArray.add("Item No. 3"); spinnerArray.add("Item No. 4"); 

Наконец, создайте объект Spinner и прикрепите к нему макет стиля.

 Spinner spinner = new Spinner(getActivity()); spinner.setTag("some_id"); ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, spinnerArray); spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item); spinner.setAdapter(spinnerArrayAdapter); 

Обратите внимание, что Spinner (getActivity ()) в приведенной выше строке будет изменен на Spinner (this), если вы пишете это изнутри Activity, а не изнутри фрагмента.

Это все!


Прикрепите стиль Spinner внутри файла макета Android:

Во-первых, создайте xml-файл, который определяет атрибут style (gradient_spinner.xml)

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item><layer-list> <item><shape> <gradient android:angle="90" android:type="linear" /> <stroke android:width="1dp" android:color="@color/colorBackground" /> <corners android:radius="2dp" /> <padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp" /> </shape></item> <item android:right="5dp"> <bitmap android:gravity="center_horizontal|right" android:src="@drawable/expand_icon"> <padding android:right="2dp" /> </bitmap> </item> </layer-list></item> </selector> 

Затем внутри файла style.xml укажите стиль и вызовите gradient_spinner в качестве фона

 <style name="spinner_style"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">@drawable/gradient_spinner</item> <item name="android:layout_margin">1dp</item> <item name="android:paddingLeft">5dp</item> <item name="android:paddingRight">5dp</item> <item name="android:paddingTop">5dp</item> <item name="android:paddingBottom">5dp</item> </style> 

Наконец, прикрепите вышеуказанный стиль к Spinner:

 <Spinner android:id="@+id/agent_id_spinner" android:layout_width="match_parent" android:layout_height="40dp" android:textSize="@dimen/title_text_view" style="@style/spinner_style" /> 

Это оно!

Скопируйте и вставьте этот xml, чтобы он отображался в раскрывающемся списке и изменил цвет выпадающего списка

  <?xml version="1.0" encoding="UTF-8"?><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" android:background="@drawable/back1" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:background="@drawable/red"> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="match_parent" android:dropDownWidth="fill_parent" android:popupBackground="@drawable/textbox" android:spinnerMode="dropdown" android:background="@drawable/drop_down_large" /> </LinearLayout> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/linearLayout1" android:layout_alignRight="@+id/linearLayout1" android:layout_below="@+id/linearLayout1" android:layout_marginTop="25dp" android:background="@drawable/red" android:ems="10" android:hint="enter card number" > <requestFocus /> </EditText> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignLeft="@+id/editText1" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="33dp" android:orientation="horizontal" android:background="@drawable/red"> <Spinner android:id="@+id/spinner3" android:layout_width="72dp" android:layout_height="wrap_content" android:popupBackground="@drawable/textbox" android:spinnerMode="dropdown" android:background="@drawable/drop_down_large" /> <Spinner android:id="@+id/spinner2" android:layout_width="72dp" android:layout_height="wrap_content" android:popupBackground="@drawable/textbox" android:spinnerMode="dropdown" android:background="@drawable/drop_down_large" /> <EditText android:id="@+id/editText2" android:layout_width="22dp" android:layout_height="match_parent" android:layout_weight="0.18" android:ems="10" android:hint="enter cvv" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="55dp" android:layout_alignParentLeft="true" android:layout_alignRight="@+id/linearLayout2" android:layout_below="@+id/linearLayout2" android:layout_marginTop="26dp" android:orientation="vertical" android:background="@drawable/red" > </LinearLayout> <Spinner android:id="@+id/spinner4" android:layout_width="15dp" android:layout_height="18dp" android:layout_alignBottom="@+id/linearLayout3" android:layout_alignLeft="@+id/linearLayout3" android:layout_alignRight="@+id/linearLayout3" android:layout_alignTop="@+id/linearLayout3" android:popupBackground="@drawable/textbox" android:spinnerMode="dropdown" android:background="@drawable/drop_down_large"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/linearLayout3" android:layout_marginTop="18dp" android:text="Add Amount" android:background="@drawable/buttonsty"/> 

С уровня API 16 и выше вы можете использовать следующий код, чтобы изменить значок выпадающего списка в spinner. Просто goto onItemSelected в setonItemSelectedListener и измените выделенное текстовое изображение, выбранное именно так.

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // give the color which ever you want to give to spinner item in this line of code //API Level 16 and above only. ((TextView)parent.getChildAt(position)).setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,ContextCompat.getDrawable(Activity.this,R.drawable.icon),null); //Basically itis changing the drawable of textview, we have change the textview left drawable. } @Override public void onNothingSelected(AdapterView<?> parent) { } }); 

Надеюсь, что это поможет кому-то.