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). Spinner için Üst/Alt Dolgusu
cevap
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
Tek çözüm bu gibi görünüyor. Bağlantınızı takip ettim.http://stackoverflow.com/a/16400899/519790 – multiholle
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.
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.
Bu bana daha fazla dolgu vermeden önce İlk ve son öğeden sonra. – multiholle
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
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.
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 –