【问题标题】:Spinner color style in AndroidAndroid中的微调器颜色样式
【发布时间】:2016-04-07 20:51:35
【问题描述】:

我正在制作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>

【问题讨论】:

  • 为适配器制作自己的自定义布局。
  • 我把两个Textview都做成了不同的文件,但问题是一样的。
  • 您调用的是 android 布局而不是您自己的自定义布局 android.R.layout.simple_spinner_item
  • 但我不想为此制作额外的文件???

标签: java android xml eclipse android-studio


【解决方案1】:

通过使用下面的代码,我可以解决我的问题。

  <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" />
    

    【讨论】:

    • 在深处指定java代码和最后一个xml我听不懂你说什么。
    • 你想了解的告诉我
    【解决方案3】:

    您可以像这样在 xml 中设置微调器的背景颜色:

    android:background="YOUR_HEX_COLOR_CODE"
    

    如果你在微调器中使用下拉菜单,你可以像这样设置它的背景颜色:

    android:popupBackground="YOUR_HEX_COLOR_CODE"
    

    【讨论】:

    • 我已设置 android:popupBackground="#FFFFFF" 但无法设置 textColor="#000000"
    • 查看此链接broculos.net/2013/09/…
    【解决方案4】:

    将 android.R 更改为 yourprojcet.R

    android.R.layout.simple_spinner_dropdown_item
    

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

    它采用 android 布局而不是您的应用特定布局。

    【讨论】:

    • 表示添加包名而不是android
    • 导入 letmobility.com.itforte.R;代替 android.R;
    • 你能给出另一个解决方案吗?
    【解决方案5】:

    你的电话应该是这样的:

    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);
    

    【讨论】:

    • 兄弟你给出了错误的解决方案。正确阅读问题我想更改文本的颜色。
    • @harshadpansuriya 我知道你的问题和'setDropDownViewResource(R.layout.simple_spinner_dropdown_item); ' 将显示您在 xml 中声明的文本颜色。
    • 好的,但是你的代码可以给我像停止不幸错误这样的输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多