2013-03-23 73 views
8

我有一個Android應用程序,我正在寫一個混凝土公司,將用於進出時鐘。我曾用一些紡織品從下拉菜單中選擇「工作場所」和「工作」這些東西,但我擔心紡紗廠中的物品太靠近了,而且員工很難選擇合適的物品。在沒有自定義樣式的情況下在Android Spinner中的項目之間添加更多空間?

我想在微調器中的項目之間留出更多空間,但不想經歷製作自定義樣式的所有麻煩,因爲我真的希望微調器看起來並且表現得完全正確除了只有更多的填充以外,其它的默認都是默認的,而且爲了製作自定義樣式還有很多工作要做。

是否有任何簡單的更改,我可以做,如設置微調的一些屬性?我已經嘗試將微調類型設置爲對話框,但它只是顯示具有相同數量間距的列表,而不是附加到微調控件。

回答

15

我相信Pragnani的答案是正確應用樣式的微調,但是這是我如何實際執行它...

-In RES /佈局,創建一個只包含textview的XML佈局,如下所示。這個textview有我想要的自定義大小/填充。

spinner_row.xml

<?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"/> 

然後在我在我的數據加載到離心器,當我創建用於我的紡絲器的ArrayAdapter活性,我將自定義的TextView作爲第二個參數,以一個ArrayAdapter構造函數。

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

因此,現在微調使用我在spinner_row.xml中爲列表中的每個項目定義的自定義文本視圖。

這最終比我更喜歡玩這種風格。

3

試試這個, 在這裏,您並未更改微調器樣式,而是通過爲微調器項目設置樣式來爲您的微調器項目添加額外的功能。

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

,並通過使用樣式attribue

style="@style/spinnerStyle" 
+3

我試過這個,但它似乎沒有做任何事情。我將樣式放在我的res/values文件夾中的styles.xml文件中。我嘗試將填充值設置爲50,這樣我就可以確定發生了變化,沒有任何變化。 – Jim 2013-03-25 20:31:29

+0

@Jim但風格的父應該是android:style/Widget.TextView.SpinnerItem – Pragnani 2013-03-26 04:35:48

+1

我相信這是正確的答案,但有一個小錯誤,它顯示style =「@ style/spinnerStyleView」,但代碼示例中的樣式上面實際上是命名爲spinnerStyle。我在res \ layout中使用了一個不同的路徑,只用了一個textview,並在XML中定義了textview的大小和填充。然後,當爲我的微調創建適配器時,我通過自定義textview作爲ArrayAdapter構造函數中的第二個參數,並且它爲列表中的每個項目使用我的自定義textview。我認爲這將是一件困難的事情,但實際上它非常簡單。 – Jim 2013-03-28 17:41:03

9

如果您想給出滿意的間距,那麼請改爲如果所有這些XML和全部, 您可以在spinner適配器中輕鬆使用「simple_spinner_dropdown_item」。

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); 

它爲我工作。

+5

這個答案,除了遲了2年之外,沒有解決實際問題。 – Jim 2015-04-24 14:05:20

+0

其實它的工作原理,唯一的問題是它也給Spinner本身帶來了一些額外的空間。 – Anthony 2015-05-17 09:49:23