1

我正在编写一个 Android 应用程序。我有几个微调器。每个都在微调器底部附近和左右两侧显示一条额外的线。请看图片。有谁知道为什么会发生这种情况以及如何解决?

在此处输入图像描述

这是定义微调器的 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:​​我做了一些实验,如果从 XML 文件中删除微调器之前的 TextView,微调器会正确显示。我不知道为什么会这样,有什么想法吗?

Update2:另外,如果我在微调器中添加一个 layout_marginTop,问题就会消失!这真的很奇怪。

4

3 回答 3

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

试试这个..

于 2012-04-17T17:44:34.533 回答
0

这显然是android的一个错误。我看到其他人遇到同样的问题,没有人有一个好的答案。这实际上不是在微调控件上绘制的一条线,正如我最初所想的那样,而是控件绘制中的一个“间隙”,它允许背景颜色显示出来。

修复或解决此问题的方法是更改​​绘制微调器的位置。我通过在第一个微调器之前添加一个奇数边距来做到这一点。就我而言,我使用了 5dp。然后,我对以下两个微调器使用 4dp,以便它们都从奇数像素数开始。

这有点难看,但在为此创建修复程序之前,这是我找到的最佳解决方案。

于 2012-04-23T18:43:57.497 回答
0

试试这个

<Spinner
    ...            
    style="@style/Widget.AppCompat.Spinner.Underlined"
    ... />
于 2015-08-06T04:11:16.263 回答