Android中使用微调控件的图形问题

时间:2011-05-14 17:28:56

标签: android spinner scrollview tablelayout

我的第一个(旧的)Android应用程序(Suspension Calculator)显示一个问题我无法找到解决方案:某些微调器上的微调器控件在不需要的位置显示透明线。模式是这样的:从第一个微调控件开始,每个其他微调器都有这个问题。因此,虽然微调器2,4,6,...没有不需要的线,但是微调器1,3,5 ......都有它们。

下图(下面的链接)首先显示处于选定状态的微调器,并在红色分隔符后显示处于未选择状态。在选定状态下,透明线处于整个控件的基线高度,除了按钮文本可以在的某些位置。在未选择状态下有点不同。

我无法直接提供图片:

  

[...]作为垃圾邮件预防机制,新的   用户不得发布图片。

但我可以给你一个链接:

Screenshot that illustrated the graphical spinner problem

res/layout下的XML文件如下所示:

<ScrollView ...>
    <TableLayout ...>
        <TableRow>
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/units"
                android:gravity="center_vertical"
                android:paddingRight="5dp"
            />
            <Spinner
                android:id="@+id/unit_spinner"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true"
            />
        </TableRow>
        ...
    </TableLayout>
</ScrollView>

至少从Froyo(Android 2.2)开始,我就看到了这个问题。在早期版本(至少是Android 1.6)中,它不存在。它在Eclipse的Graphical Layout编辑器中不存在,但我看到它在手机和模拟器中运行应用程序 - 这至少是一致的,并暗示我正在做的事情是由于不做正确的事情; - )。

1 个答案:

答案 0 :(得分:1)

实际上我可以在Android 2.3上重现这种行为。在Android 2.2及更低版本上无法使用。

将Spinner放在TableLayout或RelativeLayout中并不重要。同样的问题..

只有获得线条的解决方案是在微调器之间放置一个1px-View:

<Spinner android:layout_height="wrap_content" android:id="@+id/spinnerDriver"
    android:layout_width="match_parent" android:layout_below="@id/driverDesc" />

<View android:id="@+id/helper" android:layout_height="1px"
    android:layout_width="match_parent" android:layout_below="@id/spinnerDriver" />

<Spinner android:layout_height="wrap_content" android:id="@+id/spinnerDriver1"
    android:layout_width="match_parent" android:layout_below="@id/helper" />

这实际上是一个非常非常非常丑陋的解决方案,但它对我有用......