微调器dropUP而不是dropDOWN android [英] Spinner dropUP instead dropDOWN android

查看:92
本文介绍了微调器dropUP而不是dropDOWN android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个从ArrayAdapter扩展的适配器,以便用一组对象(城市)填充一个Spinner.所有对象和适配器都可以正常工作,至少看起来是正确的.问题是,当我显示所有城市集合时,它显示为UP而不是DOWN.

I have an Adapter which extends from ArrayAdapter in order to fill one Spinner with one collections of objects (City). Both all objects and adapter work correctly, at least what it that it seems. The problem is that when I display all collections of cities, it is displayed to UP instead to DOWN.

有人知道会发生什么吗?

Does anyone know what can be happen?

这是我的适配器

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);        
  }

布局中的我的微调框(位于RelativeLayout中)

My Spinner in layout (it is into a 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>

我的活动

   private Spinner mySpinner;
   private AdapterSpinnerListCities adapter;
   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
        }


    });   

推荐答案

如果使微调框膨胀的项目靠近屏幕底部,则会发生这种情况.由于微调器向下膨胀时将没有足够的空间(或仅勉强有足够的空间),因此将其向上膨胀.尝试将微调框的布局(垂直)放在较高的位置.

This would happen if the item which inflates the spinner is close to the bottom of the screen. Since the spinner would not have enough room (or just barely enough room) if inflated downward, it is inflated upward instead. Try putting the spinner higher (vertically) in the layout.

这篇关于微调器dropUP而不是dropDOWN android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆