2012-04-17 73 views
1

我正在寫一個Android應用程序。我有幾個紡紗工。每個人在靠近底部以及左側和右側顯示一條額外的線。請參閱圖片。有誰知道這是爲什麼發生,以及如何解決它?Android微調額外線

enter image description here

下面是在XML文件中定義微調的條目:

<Spinner android:id="@+id/formatSpinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:drawSelectorOnTop="true" 
     android:prompt="@string/format_prompt"/> 

這裏是初始化代碼:

 cur = mDbHelper.fetchAllFormats(); 
     adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cur, 
       new String[]{MoviesDbAdapter.KEY_NAME}, new int[]{android.R.id.text1}); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     formatSpinner.setAdapter(adapter); 

謝謝!

Update1:​​我做了一些嘗試,並且如果Spinner前面的TextView從XML文件中刪除,微調框顯示正確。我不知道爲什麼會這樣,有什麼想法?

更新2:另外,如果我添加layout_marginTop到微調,問題就會消失!這真的很奇怪。

+0

Android是什麼:drawSelectorOnTop – 2012-04-17 17:43:30

+0

不知道,它似乎並沒有什麼差別我是否與否。 – wholladay 2012-04-18 20:41:20

回答

0

這顯然與Android的錯誤。我看到其他人遇到同樣的問題,沒有人有一個很好的答案。這實際上並不是像我原先想象的那樣在微調控件上繪製的線條,而是控件圖形中的一個「間隙」,允許背景顏色顯示。

修復或解決此問題的方法是更改​​繪製微調器的位置。我在第一個微調之前加了一個奇數的邊距來做到這一點。在我的情況下,我用5dp。然後,我使用4dp作爲以下兩個旋鈕,以便它們都以奇數像素數開始。

這是一種醜陋的,但直到爲此創建修復程序,這是我找到的最佳解決方案。

1
<Spinner android:id="@+id/formatSpinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:prompt="@string/format_prompt"/> 

試試這個..

+0

刪除drawSelectorOnTop屬性沒有任何區別。 – wholladay 2012-04-18 20:40:17

0

試試這個

<Spinner 
    ...    
    style="@style/Widget.AppCompat.Spinner.Underlined" 
    ... />