2015-10-27 24 views
13

Android'de bir döndürücü için, ilk/son öğenin üstünde/altında ekstra bir dolgu yapmayı nasıl belirleyebilirim? Aşağıdaki Goolge örneğine bakın (8 dp boşluk). Google Simple MenuSpinner için Üst/Alt Dolgusu

+0

Bu bağlantıları deneyin [1. bağlantı] (http://stackoverflow.com/questions/17407626/custom-layout-for-spinner-item) [2. bağlantı] (http://stackoverflow.com/questions/8946893/ android-özel-spinner-düzen) [Örnek Program] (http://mrbool.com/how-to-customize-spinner-in-android/28286) Bu Yardımı tam olarak doldurun –

cevap

3

Spinner, birden çok görünüm türünü desteklemiyor. Issue.

Listenizi görüntülemek için iletişim kutusunu kullanmanızı öneririm. Yorumunuza göre Düzenlendi

Sen Spinner için bu özel Adapter kullanarak yapabileceğiniz bu question

+0

Tek çözüm bu gibi görünüyor. Bağlantınızı takip ettim.http://stackoverflow.com/a/16400899/519790 – multiholle

2

Size özel düzeninizi kullanarak sizin için Spinner için özel bir bağdaştırıcı oluşturmanız gerekir. Böylece, sadece uygun kenar boşluğu/paddins ile bir düzen sağlamanız gerekir.

Spinner spinner = (Spinner) findViewById(R.id.myspinner); 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.data, R.layout.spinner_item); 
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
spinner.setAdapter(adapter); 

Geçerli bir örnek here bulabilirsiniz.

1

Yalnızca döndürücüde görüntülemek istediğiniz öğeler için ayrı bir düzen oluşturun.

bu

spinner_text_view.xml etkinlik/fragmanında Sonra

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/customTextView" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:padding="15dp" 
android:text="@string/sample_list_item" 
android:textColor="@android:color/black" 
android:textSize="20sp" /> 

, bir adaptör (bu durumda basit olacak şekilde bir dizi adaptör) yaratabilir gibi bir şey ve buna bu düzeni geçmesi adaptör referansı. Son olarak, adaptörü adaptöre takınız ve istenilen sonucu alabilirsiniz.

Örnek kod.

private void setupSpinner() { 
    String[] sampleSpinnerItems = {"One", "Two", "Three", "Four", "Five"}; 
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
      R.layout.spinner_text_view, sampleSpinnerItems); 
    sampleSpinner.setAdapter(spinnerAdapter); 
}  

Bu yardımcı olur umarım.

Not: spinner_text_view, daha önce oluşturduğunuz düzen dosyasıdır.

+0

Bu bana daha fazla dolgu vermeden önce İlk ve son öğeden sonra. – multiholle

1

Bu ve özel düzenler için özel bağdaştırıcıya ihtiyacınız var. 2 düzen kullanabilirsiniz. Gösterilecek n elemanınız olduğunu varsayalım, sizin spinnerinizde n + 2 olacak. iF pozisyonu 0 (ilk eleman) veya boş düzeni göstereceğiniz son elemandır, aksi halde diğer düzeni gösterirsiniz. Bu alanı yaratırken kullanacağınız boş düzen

1

ile sorun çözüldü. Bu gibi görünecektir: ekstra dolgu ayarı ile

class YourAdapter extends BaseArrayAdapter<YourObject> { 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.your_item, parent, false); 
      DropDownViewHolder holder = new DropDownViewHolder(); 
      holder.root = convertView.findViewById(R.id.drop_down_root); 
      // other assignments etc. 
      convertView.setTag(holder); 
     } 
     DropDownViewHolder holder = (DropDownViewHolder) convertView.getTag(); 
     int bottomPadding = 0; 
     int topPadding = 0; 
     if (position == 0) { 
      topPadding = getContext().getResources().getDimensionPixelSize(R.dimen.margin_8); 
     } else if (position == (getCount() - 1)) { 
      bottomPadding = getContext().getResources().getDimensionPixelSize(R.dimen.margin_8); 
     } 

     holder.root.setPadding(0, topPadding, 0, bottomPadding); 
     // other UI related logic etc. 
     return convertView; 
    } 

    // ... 

    public static class DropDownViewHolder { 
     View root; 
     // other views 
    } 
} 

Aslında mantık VISIBLE bazı saplama görünümü görünürlüğünü değiştirme veya konumuna bağlı olarak bazı başka düzen şişirme değiştirilebilir, ancak dolgu ile çözüm bana daha doğal görünüyor.