2012-04-17 70 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" 
    ... />