2011-07-11 54 views
2

我使用默认主题(黑暗)和2.2/API级别8目标。当我将一个基本的微调器添加到我的布局时,它们看起来很可怕。文字是非常难以阅读(灰色的灰色)和箭头看起来很滑稽:为什么我的android spinners看起来很可怕?

My Spinners

如果我用的是光的主题,就已经很好了。如果我看的Android API的例子他们的纺纱看起来很好默认黑暗的主题:

Normal Spinners

为什么我所有的纺纱厂丑陋和不可读?我究竟做错了什么?

最简单的代码会显示这样:

final Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner); 
    List<String> list = new ArrayList<String>(); 
    list.add("foo"); 
    list.add("bar"); 
    mySpinner.setAdapter(new ArrayAdapter<String>(MyActivity.this, R.layout.list_item, list)); 

和布局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <Spinner 
     android:id="@+id/mySpinner" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent"></Spinner> 
</LinearLayout> 
+0

包括一些代码? – IamAlexAlright

+0

您使用的是什么项目布局? – adamp

+0

不知道我明白'item layout'是什么意思? –

回答

3

我会将微调器上的layout_height设置为wrap_content而不是match_parent。我没有看到任何与设置适配器等其他选项有关的代码,所以我猜想有一些代码丢失了。我想知道微调器是否被禁用,为什么它会变成灰色。

啊,它可能是你的背景是通过控制显示。尝试更改LinearLayout上的背景颜色,看看它是否闪烁。

+0

layout_height在他的问题中设置为wrap_content。我第一次阅读它时把我扔掉了,但是布局和微调之间的属性顺序是相反的。 – Farray

+0

无论我如何调整它的大小(layout_height)。它没有被禁用,因为它显示弹出窗口并进行选择。当我将我的清单中的主题设置为Theme.Light时,它看起来很好。只有在使用默认主题时才会如此。你可以看到向下的箭头图形看起来很奇怪 - 不像它应该是三角形。 –

+0

你是对的。我希望这是一个容易的。但我可以说Spinner的高度与文本字段的大小相同,并且它看起来像是放大了它想要的那样。 – chubbsondubs

1

您需要将微调框的TextView TextColor属性设置为0xFF000000以获得不透明的黑色。

对于您的情况,您可以扩展ArrayAdapter类,以便getView返回带有0xFF000000 TextColor属性的视图。

2
mySpinner.setAdapter(new ArrayAdapter<String>(
     MyActivity.this, 
     android.R.layout.simple_spinner_item, list)); 
1

我遇到了类似的问题,并意识到错误是创建适配器时选择的“上下文”。我曾经使用过“getApplicationContext()”,这导致了灰色图像。一旦我将其更改为活动上下文“MainActivity.this”,问题就解决了。感谢nz_karl指出。

相关问题