我必须缩短旋转器的下拉长度

时间:2016-02-02 04:43:53

标签: java android

这是代码。

public class QuotesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


private static final int PRICE_PICKER_MAX_VALUE = 1000000;
private static final int PRICE_PICKER_MIN_VALUE = 500;
private static final int PRICE_PICKER_INTERVAL_VALUE = 500;
private List<Quote> mQuotes;
private String[] mPickerValues;
private String mSelectedQuotePrice;
private OnQuoteActionListener mListener;
private Context mContext;

/**
 * @param context      a context
 * @param quotes the data for this adapter
 */
public QuotesAdapter(Context context, List<Quote> quotes) {
    mContext = context;
    mQuotes = quotes;
}

private String[] getArrayWithSteps (int iMaxValue, int iMinValue, int iStep) {
    int iStepsArray = (iMaxValue-iMinValue)/iStep+1; //get the lenght array that will return

    String[] arrayValues= new String[iStepsArray]; //Create array with length of iStepsArray

    for(int i = 0; i < iStepsArray; i++) {
        arrayValues[i] = String.valueOf(iMinValue + (i*iStep));
    }

    return arrayValues;
}

private void setPricePickerSelection (String valueToSet, Spinner numPicker) {
    for (int i = 0; i < mPickerValues.length; i++)
        if (mPickerValues[i].equals(valueToSet)) {
            numPicker.setSelection(i, true);
        }
}

@Override
public int getItemCount() {
    return mQuotes.size();
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int rawPosition) {

    final ItemViewHolder itemViewHolder = (ItemViewHolder) viewHolder;
    final Quote item = mQuotes.get(rawPosition);
    //Update from / to city information
    String fromCity = item.getFromCity();
    String toCity = item.getToCity();
    Typeface myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Bold.ttf");
    if (StringUtils.isNotBlank(fromCity) && StringUtils.isNotBlank(toCity)) {
        StringBuffer sb = new StringBuffer(" ").append(fromCity).append(" ");
        itemViewHolder.mFromCityView.setText(sb.toString());
        itemViewHolder.mToCityView.setText(" " + toCity);


        myFont= Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-SemiBold.ttf");
        itemViewHolder.mFromCityView.setTypeface(myFont);
        itemViewHolder.mToCityView.setTypeface(myFont);
        myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Medium.ttf");
        itemViewHolder.mToCityTitleView.setTypeface(myFont);
        itemViewHolder.mFromCityTitleView.setTypeface(myFont);

        ViewUtils.setMultipleToVisible(itemViewHolder.mFromCityView, itemViewHolder.mToCityView, itemViewHolder.mFromCityTitleView, itemViewHolder.mToCityTitleView);


    } else {
        ViewUtils.setMultipleToGone(itemViewHolder.mFromCityView, itemViewHolder.mToCityView, itemViewHolder.mFromCityTitleView, itemViewHolder.mToCityTitleView);
    }
    //Update the Logistics Company name
    itemViewHolder.mCompanyView.setText(item.getLogisticsCompanyName());
    myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Bold.ttf");
    itemViewHolder.mCompanyView.setTypeface(myFont);

    myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Medium.ttf");
     itemViewHolder.mRequestDateView.setText(item.getRequestDate());
    itemViewHolder.mCloesByView.setText(item.getRequestEndDate());
    itemViewHolder.mTruckType.setText(item.getTruckType());
    itemViewHolder.mCapacity.setText(item.getCapacity() + "");
    itemViewHolder.mRequestDateView.setTypeface(myFont);
    itemViewHolder.mCloesByView.setTypeface(myFont);
    itemViewHolder.mTruckType.setTypeface(myFont);
    itemViewHolder.mCapacity.setTypeface(myFont);


    int price = item.getMoney();
    //Load the picker values in defined intervals
    mPickerValues = getArrayWithSteps(PRICE_PICKER_MAX_VALUE, PRICE_PICKER_MIN_VALUE, PRICE_PICKER_INTERVAL_VALUE);
    // Creating adapter for truck options spinner
    ArrayAdapter<String> quotePriceOptionsAdapter = new ArrayAdapter<String>(mContext,
            android.R.layout.simple_spinner_dropdown_item, mPickerValues);
    // attaching data adapter to spinner
    itemViewHolder.mPricePicker.setAdapter(quotePriceOptionsAdapter);
    setPricePickerSelection(String.valueOf(price), itemViewHolder.mPricePicker);

    itemViewHolder.mPricePicker.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            int selectedQuotePricePosition = parent.getSelectedItemPosition();
            mSelectedQuotePrice = mPickerValues[selectedQuotePricePosition];
        }


        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    itemViewHolder.mIgnoreQuoteView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mListener != null) {
                mListener.onIgnore(item.getRequestID());
            }
        }
    });

    itemViewHolder.mQuoteButtonView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mListener != null) {
                item.setMoney(Integer.parseInt(mSelectedQuotePrice));
                mListener.onQuote(item);
            }
        }
    });
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_quote_item,
            parent, false);
    return new ItemViewHolder(view);
}

public void setQuoteActionListener(OnQuoteActionListener listener) {
    mListener = listener;
}

public interface OnQuoteActionListener {

    public void onQuote(Quote quote);
    public void onIgnore(int requestID);
}

public static class ItemViewHolder extends RecyclerView.ViewHolder {
    public TextView mFromCityTitleView ;
    public TextView mFromCityView;
    public TextView mToCityView;
    public TextView mToCityTitleView;
    public TextView mCompanyView ;
    public TextView mRequestDateView;
    public TextView mCloesByView;
    public TextView mTruckType;
    public TextView mCapacity;
    public Button mQuoteButtonView;
    public Button mIgnoreQuoteView;
    public Spinner mPricePicker;

    public ItemViewHolder(View v) {
        super(v);
        mFromCityTitleView = (TextView) v.findViewById(R.id.quote_item_from);
        mFromCityView = (TextView) v.findViewById(R.id.quote_item_fromcity);
        mToCityTitleView = (TextView) v.findViewById(R.id.quote_item_to);
        mToCityView = (TextView) v.findViewById(R.id.quote_item_tocity);
        mCompanyView = (TextView) v.findViewById(R.id.quote_company);
        mRequestDateView = (TextView) v.findViewById(R.id.quote_item_requestedDate);
        mCloesByView = (TextView) v.findViewById(R.id.quote_item_closesby);
        mTruckType = (TextView)  v.findViewById(R.id.quote_item_truck_type);
        mCapacity  =  (TextView) v.findViewById(R.id.quote_item_capacity);
        mQuoteButtonView = (Button) v.findViewById(R.id.button_quote);
        mIgnoreQuoteView = (Button) v.findViewById(R.id.button_ignore);
        mPricePicker = (Spinner) v.findViewById(R.id.quote_pricePicker);
    }
}
}`

Screenshot

    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center"
    android:background="@color/back_white"
    android:orientation="horizontal">
    <Spinner
        android:id="@+id/quote_pricePicker"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="left"/>
    </LinearLayout>

1 个答案:

答案 0 :(得分:0)

为Spinner创建适配器时,会提供自定义布局而不是预定义布局

创建名为 spinner_row.xml

的xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/cust_view"  
    android:layout_width="match_parent" 
    android:textColor="@color/black"
    android:textSize="12sp"
    android:layout_height="36dp" 
    android:gravity="left|center_vertical"/>

在这里,您可以通过修改此textview来更改微调器中元素的颜色文本大小和宽度和高度

在创建适配器

时使用它
ArrayAdapter<String> adapter=new ArrayAdapter<String>(context, R.layout.spinner_row,yourlist);

最后一项任务是常规的

spinner.setAdapter(adapter);

我希望这会对你有所帮助。