Android中的Spinner颜色样式

5
我正在制作如下图片所示的Spinner。它的功能很好,但我想将background颜色更改为#FFFFFF,将textColor更改为#000000。但我得到了修改后的输出...

进入图像描述

Java代码:

Spinner staticSpinner = (Spinner)findViewById(R.id.static_spinner);
        ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter.createFromResource(this,R.array.request_role,android.R.layout.simple_spinner_item);

        staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // Apply the adapter to the spinner
        staticSpinner.setAdapter(staticAdapter);

XML 代码:

<Spinner
         android:id="@+id/static_spinner"
         android:layout_width="150dp"
         android:layout_height="45dp"
         android:layout_marginLeft="30dp"
         style="@android:style/Widget.Holo.Light.DropDownItem"     ></Spinner>

simple_spinner_dropdown_item.xml

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/dropdownListPreferredItemHeight"
    android:ellipsize="marquee"
    android:textColor="#000000"

  />

simple_spinner_item.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textColor="#000000"
    android:textAlignment="inherit"/>

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat">

        <item name="colorPrimary">#0072BA</item>
        <item name="colorPrimaryDark">#004F80</item>
        <item name="colorAccent">#0072BA</item>
        <item name="android:textColorPrimary">#FFFFFF</item>
        <item name="colorControlHighlight">#FFFFFF</item>
        <item name="android:actionBarSize">48dp</item>
        <item name="actionBarSize">48dp</item>
        <item name="android:windowActionBar">false</item>

    </style>
</resources>

为适配器创建自定义布局。 - sumit singh
你正在调用 Android 布局而不是你自己的自定义布局 android.R.layout.simple_spinner_item。 - sumit singh
但我不想为此创建额外的文件吗? - user5713256
@sumit singh 您的链接无法使用,即使旋转器也是不可见的。 - user5713256
我的代码运行良好,但现在我只想将textcolor =“#FFFFFF”更改为textColor =“#000000”。 - user5713256
显示剩余2条评论
5个回答

3
通过使用以下代码,我可以解决我的问题。
  <Spinner
                android:id="@+id/static_spinner2"
                android:layout_width="fill_parent"
                android:layout_height="32dp"
                android:layout_marginLeft="30dp"
                android:background="@drawable/apptheme_spinner_background_holo_light"
                android:popupBackground="#ffffff" />

Spinner_item.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="14sp"
    android:background="#FFFFFF"
    android:textColor="#000000" />

spinner_dropdown_item.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee"
    android:textColor="#000000"/>

Java 代码:

Spinner staticSpinner = (Spinner)findViewById(R.id.static_spinner);
        ArrayAdapter<CharSequence> staticAdapter =
                ArrayAdapter.createFromResource(this,R.array.request_role,R.layout.spinner_item);

        staticAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

        // Apply the adapter to the spinner
        staticSpinner.setAdapter(staticAdapter);

2
使用以下代码添加旋转器:
 <Spinner
    style="@style/edit_style"
    android:id="@+id/spr_city"
    android:background="@drawable/selector_spinner"
    android:layout_width="0dp"
    android:textColor="@android:color/white"
    android:minHeight="@dimen/min_height"
    android:textCursorDrawable="@null"
    android:textColorHint="@android:color/white"
    android:layout_height="fill_parent"
    android:layout_weight="9"
    />

并将此样式添加到style.xml中。
 <style name="edit_style" >
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#ffffff</item>
</style>

在活动中使用以下代码:
       ArrayAdapter<String> adp1=new ArrayAdapter<String>        (activity,R.layout.spinner_item_selected,city_list);
    adp1.setDropDownViewResource(R.layout.spinner_item);
    s_city.setAdapter(adp1);

并创建 xml spinner_item_selected

<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/textViewSpinnerItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/common_margin"
style="@style/edit_style"
android:textColor="@android:color/white"
xmlns:android="http://schemas.android.com/apk/res/android" />

还有一份XML文档

<?xml version="1.0" encoding="utf-8"?>


<TextView
android:id="@+id/textViewSpinnerItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/common_margin"
style="@style/edit_style"
android:textColor="@color/spinner_item_selector"
xmlns:android="http://schemas.android.com/apk/res/android" />

1
请提供Java代码和最后一个XML文件。我无法理解您所说的内容。 - user5713256
1
你想了解什么,请告诉我。 - user5742865

1
你可以在xml中像这样设置旋转器的背景颜色:
android:background="YOUR_HEX_COLOR_CODE"

如果您使用下拉菜单和微调器,可以像这样设置其背景颜色:

android:popupBackground="YOUR_HEX_COLOR_CODE"

我已经设置了android:popupBackground="#FFFFFF",但无法设置textColor="#000000"。 - user5713256
1
请查看此链接:http://www.broculos.net/2013/09/how-to-change-spinner-text-size-color.html#.Voo7JbZ97IV - Aslam Patel

0

将 android.R 改为 yourproject.R

android.R.layout.simple_spinner_dropdown_item

letmobility.com.itforte.R.layout.simple_spinner_dropdown_item;

它正在使用Android布局而不是您的应用程序特定布局。


意思是在代码中添加包名,而不是使用 Android。 - user5713256
导入 letmobility.com.itforte.R; 而不是 android.R; - CodingRat
你能给出另一种解决方案吗? - user5713256

0

你的调用应该像这样:

ArrayAdapter<CharSequence> staticAdapter = 
   ArrayAdapter.createFromResource(this,R.array.request_role,android.R.layout.simple_spinner_item);

      staticAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);

而不是:

ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter.createFromResource(this,R.array.request_role,android.R.layout.simple_spinner_item);

    staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

兄弟,你给的解决方案是错误的。请仔细阅读问题,我想要改变文本的颜色。 - user5713256
@harshadpansuriya 我知道你的问题是什么,“setDropDownViewResource(R.layout.simple_spinner_dropdown_item);”将会显示在XML中声明的文本颜色。 - Kapil Rajput
1
好的,但是你的代码可能会给我输出类似于“停止,遗憾的错误”的结果。 - user5713256

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接