2015-03-20 5 views
0

Как вы настраиваете контекстное меню Spinners? Я уже сделал настройку в селекторном представлении (http://i.stack.imgur.com/uJzYP.png), но понятия не имею, как это сделать в меню содержимого.Пользовательское контекстное меню Spinner

Для примера селектора разного цвета, закругленные углы, больше шрифтов и т.д.

Теперь он выглядит: http://i.stack.imgur.com/jnH31.png

осколком расположение:

<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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:background="@color/white" 
tools:context="tenkol.design.com.imbrecords.FragmentEditProfile"> 

..... 

<Spinner 
    android:id="@+id/spinner_countries" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/editText_edit_user_email" 
    android:layout_marginTop="12dp" 
    android:layout_centerHorizontal="true" 
    android:drawSelectorOnTop="true" 
    android:popupBackground="@color/blue" 
    style="@style/spinner_style" 
    /> 

    ..... 
</RelativeLayout> 

@ стиль/spinner_style:

<style name="spinner_style"> 
    <item name="android:background">@drawable/spinner_bg</item> 
    <item name="android:layout_marginLeft">3dp</item> 
    <item name="android:layout_marginRight">3dp</item> 
    <item name="android:layout_marginBottom">10dp</item> 
    <item name="android:paddingLeft">8dp</item> 
    <item name="android:paddingTop">5dp</item> 
    <item name="android:paddingBottom">5dp</item> 
</style> 

@ вытяжке/spinner_bg:

<?xml version="1.0" encoding="utf-8"?> 

<item> 
    <layer-list> 
     <item> 
      <shape> 
       <gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" /> 

       <stroke android:width="1dp" android:color="@color/blue" /> 

       <corners android:radius="5dp" /> 

       <padding android:bottom="3dp" android:left="3dp" android:right="10dp" android:top="3dp" /> 
      </shape> 
     </item> 
     <item> 
      <bitmap android:gravity="center_vertical|right" android:src="@drawable/spinner" /> 

     </item> 
    </layer-list> 
</item> 

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

class SpinAdapter extends ArrayAdapter<DataCountry>{ 

private Context context; 
private List<DataCountry> values; 

public SpinAdapter(Context context, int textViewResourceId, 
        List<DataCountry> values) { 
    super(context, textViewResourceId, values); 
    this.context = context; 
    this.values = values; 
} 

public int getCount(){ 
    return values.size(); 
} 

public DataCountry getItem(int position){ 
    return values.get(position); 
} 

public long getItemId(int position){ 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = LayoutInflater.from(context); 
    View row = inflater.inflate(R.layout.spinner_layout_row, parent, false); 
    TextView countryName = (TextView)row.findViewById(R.id.spinner_row); 
    countryName.setText(context.getString(R.string.edit_user_country)); 
    countryName.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.abc_text_size_title_material_toolbar)); 
    countryName.setTextColor(context.getResources().getColorStateList(R.color.deep_blue)); 

    return row; 
} 

@Override 
public View getDropDownView(int position, View convertView, 
          ViewGroup parent) { 
    TextView label = new TextView(context); 
    label.setTextColor(Color.BLACK); 
    label.setText(values.get(position).getName()); 

    return label; 
} 
} 

Итак, я повторяю вопрос: Как сделать индивидуальный дизайн для прядильщика? (закругленные углы, больший шрифт, селектор, возможно разделение между элементами)

Спасибо за помощь.

ответ

0

Обновление getDropDownView() с этим кодом и создать индивидуальная раскладка прядильного элемента

@Override 
    public View getDropDownView(int position, View convertView,ViewGroup parent) { 
      View row= View.inflate(mContext,R.layout.spinner_item_list, null); 
      TextView label=(TextView)row.findViewById(R.id.textView); 
      label.setText(values.get(position).getName()); 
      label.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.abc_text_size_title_material_toolbar)); 
      label.setTextColor(context.getResources().getColorStateList(R.color.deep_blue)); 
      return row; 
    } 
0

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

mAdapter = new ArrayAdapter(context, R.layout.your_spinner_item_layout, data); 
0

getView() и getDropDownView() соответствуют двум типам просмотра. getView() - это выбранное представление в элементе spinner, getDropDownView() - это строка в расширенном списке. Откорректируйте свой getDropDownView() с помощью настраиваемого представления с тем же шаблоном, который используется в обычном адаптере ListView. Создайте пользовательский вид XML, надуйте его, насытите, верните и т. Д.