Android更改微调器的文本颜色(显示的文本 - 不是微调器中的项目)

时间:2015-07-17 05:45:04

标签: android android-layout android-spinner

除了一个屏幕,Spinner需要有黑色'文本。一个屏幕需要Spinner才能拥有白色'颜色(所选项目和微调器项目的显示文本)。

以下是更清晰的图像。 top image is how it appears in black color and the bottom is the spinner items image with white text color

我能够获得白色'微调器项目的颜色,但不是所选的显示文本。同样,我不想全局改变样式 - 只需这一个屏幕。这可能吗?

2 个答案:

答案 0 :(得分:5)

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
    int index = adapterView.getSelectedItemPosition();
    ((TextView) spinner.getSelectedView()).setTextColor(getResources().getColor(R.color.white));
}

答案 1 :(得分:0)

创建Spinner时,必须为其提供适配器。如果您使用Android开发人员的标准实现:

 Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.planets_array, android.R.layout.simple_spinner_item);

你可以做的就是创建你自己的布局,用于表示提供的选定项目文本并将其放在适配器中,你可以在那里提供'textColor'属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@android:id/text1"
      style="?android:attr/spinnerItemStyle"
      android:singleLine="true"
      android:textColor="@color/primary_blue"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:ellipsize="marquee"
      android:textAlignment="inherit"/>

如果您使用ArrayAdapter.createFromResource(),请不要忘记将TextView与android:id="@android:id/text1"一起使用,以便此适配器能够将数据绑定到您的布局。