Android Eclipse所有Spinner字体都变成了白色

时间:2014-08-18 07:11:00

标签: java android xml colors

在我的项目中,所有Spinner字体突然变白,这是我无法找到的原因。之前他们都是黑人。例如,在微调器中,下拉列表全部为白色。它的XML文件如下;

<Spinner
    android:id="@+id/mainactivity_spinner_city"
    android:fontFamily="Roboto"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/mainactivity_imageview_logo"
    android:layout_marginTop="15dp"  />

为了确保,我将#000000添加到所有相关位置,但列表仍为白色。使用以下方法填充微调器;

ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, list);
    dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(dataAdapter2);

所以我也给simple_spinner_item和simple_spinner_dropdown_item添加了黑色,但仍然没有变化。在Java部分,我不做任何与颜色有关的事情。可能导致所有这些文本变白的原因是什么?

编辑:只有微调器有问题。我可以改变其他元素&#39;文字颜色。但即使我插入了textColor,我也无法改变微调器:&#34;#000000&#34;与纺纱厂有关的任何地方。

4 个答案:

答案 0 :(得分:8)

已找到理由。

当我在其他程序中使用其他微调器时,我意识到这个奇怪的事实导致字体变白。即使这个问题看起来像样式问题,其根本原因在于应用程序上下文。在我的旧代码中,我使用以下代码填充Spinner;

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list);

然后我更改了context参数,如下所示;

ArrayAdapter<String> adapter= new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, list);

然后所有不受欢迎的白色字体变黑了!

如果您使用getApplicationContext()作为上下文参数,则某些样式可能不正确。因此,尝试在适配器中直接调用类似YourActivity.this的硬编码上下文将解决问题。

答案 1 :(得分:3)

应用于您的项目的主题样式可能会导致此问题,请尝试更改您清单中的主题属性。整个应用文字颜色只能从主题中更改样式。 尝试从清单文件中删除主题标记,并检查颜色是否更改为默认值,然后您可以创建自己的主题,并在其上应用任何颜色文本。

答案 2 :(得分:2)

创建xml文件spinner_dropdown_item.xml并粘贴以下代码:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="#000000"
android:textSize="23sp" 
android:padding="17dip"/>

在.java文件中添加代码:

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
                            getApplicationContext(),
                            android.R.layout.simple_spinner_item, list);
//This line sets spinner_dropdown_item.xml as your spinner item
dataAdapter
        .setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(dataAdapter);

答案 3 :(得分:1)

您可能在布局中意外更改了应用主题。所以你只需要改变主题。转到任何布局并以图形布局打开,然后您可以在顶部调色板中看到应用程序主题选项。将其更改为任何白色。要更改整个应用布局主题,您可以在下面的manifest.like中执行此操作。

<application android:theme="@style/AppTheme" >---- </application>