2013-03-23 5 views
8

İçinde ve dışında saatler için kullanılacak bir Beton şirketi için yazdığım bir Android uygulamasına sahibim. Work Site ve Job gibi işleri seçmek için bazı iğneler kullandım, ancak iğnelerdeki öğelerin birbirine çok yakın olduğundan ve çalışanların doğru ürünü seçmesi zor olacağından endişeleniyorum.Özel stil olmadan Android Spinner'daki öğeler arasında daha fazla alan ekleyin

Spinnerdaki öğeler arasında sadece biraz daha fazla yer bırakmak istiyorum, ancak özel bir tarz oluşturmada sorun yaşamak istemiyorum çünkü gerçekten de spinner'ın tam olarak görünmesini ve davranmasını istiyorum sadece biraz daha fazla doldurma dışında varsayılanı beğenir ve bunun için özel bir stil yapmak zorunda olmak çok iştir.

Döndürücünün bazı özelliklerini ayarlamak gibi yapabileceğim herhangi bir değişiklik var mı? Konuşmacı tipini Dialog'a ayarlamayı denedim, ancak sadece aynı değer aralığını gösteren listeyi gösterir, sadece spinner kontrolüne bağlı değildir.

cevap

15

kullanarak spinner stil uygulamak, ama aslında o hayata böyle mi

-In RES/düzeni, içinde gösterildiği gibi bir metin görünümünde bir metin düzeni oluşturdu. Bu metin görünümünde istediğim özel boyut/dolgu var.

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/cust_view" 
     android:minWidth="246dp" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:gravity="left|center_vertical" 
     android:textColor="@android:color/black"  
     android:textSize="20sp" 
     android:paddingLeft="4dp" 
     android:textIsSelectable="false"/> 

spinner_row.xml Sonra benim spinner için bir ArrayAdapter oluştururken I spinere zaman veri yüklemek aktivite, bir ArrayAdapter kurucusuna ikinci parametre olarak özel TextView geçmektedir.

Spinner spinClockInWorkSite = (Spinner)findViewById(R.id.spinClockInWorkSite); 
ArrayAdapter spinClockInWorkSiteAdapter = new ArrayAdapter(this, R.layout.spinner_row, this.workSiteList); 
spinClockInWorkSite.setAdapter(spinClockInWorkSiteAdapter); 

Şimdi spinner listedeki her öğe için spinner_row.xml tanımlanan oluyor benim özel TextView kullanır.

Bu, ihtiyaçlar için stil ile oynamaktan daha düz bir şekilde sonuçlandı.

3

Bunu deneyin, Burada, döndürücü stilini değiştirmiyorsunuz, ancak Döndürücü Öğeleri için stili ayarlayarak, çevirici öğeleriniz için istediğiniz ek özelliği eklemiyorsunuz.

<style name="spinnerStyle" parent="@android:style/Widget.TextView.SpinnerItem"> 
     <item name="android:padding">5sp</item> 
    </style> 

Ve ... Pragnani cevabı doğru olduğuna inanıyoruz tarzı attribue

style="@style/spinnerStyle" 
+3

Tam olarak denedim, ancak hiçbir şey yapmıyor gibiydi. Stili res/values ​​klasörümdeki styles.xml dosyasına koydum. Dolgu değerini 50'ye ayarlamayı denedim, böylece bir değişiklik olduğuna emin olabilirdim ve hiçbir şey değişmedi. – Jim

+0

@Jim Ama stil ebeveyn android olmalıdır: style/Widget.TextView.SpinnerItem – Pragnani

+1

Bu doğru cevap olduğuna inanıyorum, ama stil = "@ style/spinnerStyleView" gösterdiği küçük bir hata var ama kod örneğindeki stil Yukarıdaki aslında spinnerStyle olarak adlandırılır. Sadece bir textview ile res \ layout içinde bir XML kullanarak farklı bir rotaya gittim ve textview'in boyutunu ve XML'deki dolgusunu tanımladım.Ardından, çeviricimin adaptörünü oluştururken ArrayAdapter yapıcısında ikinci parametre olarak özel metin görünümüne geçtim ve listedeki her öğe için özel metin gösterimi kullanıyorum. Bunun uygulanması zor bir şey olacağını düşündüm ama gerçekten çok basitti. – Jim

9

Tatmin edici boşluk bırakmak istiyorsanız, o zaman tüm bu XML ve hepsi, Eğer kolayca "simple_spinner_dropdown_item" spinner adaptörde kullanabilirsiniz.

Benim için çalıştı

String [] dataList = new String[]{"Select","A","B","C","D","E"}; 
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_dropdown_item, dataList); 
     spinner.setAdapter(dataAdapter); 

gibi.

+5

ürününü değil, sadece eğiriciye dolgu ekleyin. Bu cevap, 2 yıl geç olmasına ek olarak, gerçek soruya hiçbir şekilde cevap vermiyor. – Jim

+0

Aslında işe yarıyor, tek sorun, aynı zamanda Spinner'ın kendisinde biraz fazladan boşluk bırakmasıdır. – Anthony

İlgili konular