Spinner dropUP instead of dropDOWN android

I have an adapter that extends from an ArrayAdapter to populate one Spinner with one collection of objects (City). And all objects and the adapter are working correctly, at least what it seems. The problem is that when I show all city collections, it displays in UP instead of DOWN.

Does anyone know what could happen?

This is my adapter

public class AdapterSpinnerListCities extends ArrayAdapter<City> { // My context private Context context; // Values for the spinner (City) private List<City> listLocationsSpinner = UpdatedStatusApplication.getListLocations(); Typeface tf = null; public AdapterSpinnerListCities (Context context, int textViewResourceId, List<City> listLocationsAPP) { super(context, textViewResourceId, listLocationsAPP); this.context = context; this.listLocationsSpinner = listLocationsAPP; tf = CustomFontsLoader.getTypeface(this.context,CustomFontsLoader.FONT_CHALKBOARD_1); } public int getCount(){ return listLocationsSpinner.size(); } public City getItem(int position){ return listLocationsSpinner.get(position); } public long getItemId(int position){ return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View item = convertView; item = inflater.inflate(R.layout.list_item_city, null); TextView tvCity = (TextView)item.findViewById(R.id.tv_item_city); tvCity.setText(listLocationsSpinner.get(position).getCityName().toUpperCase()); tvCity.setTypeface(tf); return(item); } // And here is when the "chooser" is popped up // Normally is the same view, but you can customize it if you want @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View item = convertView; if (listLocationsSpinner.get(position).getCitySubcity() == TagManager.TAG_IS_NOT_SUBCITY){ item = inflater.inflate(R.layout.list_item_city, null); TextView tvCity = (TextView)item.findViewById(R.id.tv_item_city); tvCity.setText(listLocationsSpinner.get(position).getCityName().toUpperCase()); tvCity.setTypeface(tf); } else{ item = inflater.inflate(R.layout.list_item_subcity, null); TextView tvSubCity = (TextView)item.findViewById(R.id.tv_item_subcity); tvSubCity.setText(listLocationsSpinner.get(position).getCityName()); tvSubCity.setTypeface(tf); } return(item); } 

My Spinner is in layout (it is in RelativeLayout)

 <LinearLayout android:id="@+id/lyt_locationSpinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/LinearLayoutLogo" android:layout_below="@+id/lyt_drink_food_deals" android:orientation="horizontal" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="5dp" > <Spinner android:id="@+id/cmb_location" style="@style/style_btn_request" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:spinnerMode="dropdown" /> </LinearLayout> 

My activity

  private Spinner mySpinner; private AdapterSpinnerListCities adapter; ![enter image description here][1]List<City> listDeployedLocations = new ArrayList<City>(); ..... ..... adapter = new AdapterSpinnerListCities (this, android.R.layout.simple_spinner_dropdown_item, listDeployedLocations); mySpinner = (Spinner) findViewById(R.id.cmb_location); mySpinner.setAdapter(adapter); // Set the custom adapter to the spinner mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected (AdapterView<?> parentView, View selectedItemView, int position, long id) { citySelected = listDeployedLocations.get(position); System.out.println("Spinner value...."+ citySelected.getCityID()+"-"+citySelected.getCityName()); } @Override public void onNothingSelected(AdapterView<?> parentView) { // code here } }); 
+4
source share
2 answers

This will happen if the element that inflates the counter is close to the bottom of the screen. Since the counter did not have enough space (or just enough space), if it is pumped down, it is pumped up. Try placing the turntable above (vertically) in the layout.

+5
source

Try adding marginEnd to the counter. The spinner does not have enough space to open down.

0
source

Source: https://habr.com/ru/post/1484334/


All Articles