微调文本颜色是白色?

use*_*313 4 android android-spinner

我在布局中使用了一个Spinner.我用这个代码:

...
        <Spinner
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:id="@+id/spin_prod_promo" />
...
Run Code Online (Sandbox Code Playgroud)

现在,当我分配它的适配器时,我使用以下代码:

...
 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mcontext, android.R.layout.simple_spinner_item, mylabels);
 // Drop down layout style
 dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 Spinner myspinner = (Spinner) V.findViewById(R.id.spin_prod_promo);
 // attaching data adapter to spinner
 myspinner.setAdapter(dataAdapter);
...
Run Code Online (Sandbox Code Playgroud)

我的问题是,微调器的文本颜色是白色的...因此是不可读的,我不会在代码中的任何地方将它设置为这样.

"有趣的是"我在不同的活动中使用完全相同的代码并且Spinner具有正确的颜色.不同之处在于,在此(BAD)情况下,微调器位于片段中.

  • 因此,如果微调器处于活动状态 - 颜色很好
  • 如果微调器位于片段上 - 颜色混乱

我尝试使用自定义布局作为微调器的项目,但我成功的是使微调器看起来禁用.此外,下拉列表中总有一个项目具有背景颜色(只有点击它才能看到它,然后只要我点击就可以看到内容)这里发生了什么?我怎么解决这个问题?

我可以做些什么来设置微调器的颜色作为主题的颜色?片段中的所有其他小部件都具有正常颜色......

谢谢

Com*_*are 24

Context mcontext = getActivity().getApplicationContext(); 这是错的吗?

是的,这是错的.仅getApplicationContext()在您确切知道使用原因时才使用getApplicationContext().特别是,永远不要getApplicationContext()用于夸大布局,因为它会通过不使用正确的主题来搞砸.

我会mcontext完全删除,将其替换为getActivity()片段中需要的位置.


Nan*_*ngh 6

试试吧..

String[]array={"A","B","C","D"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>  (**YourClassName.this**,android.R.layout.simple_list_item_checked,array);
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

NOTE YourClassName.this 是你当前的班级名称.这段代码对我有用.