【问题标题】:How to set the items' text color in Spinner Android如何在 Spinner Android 中设置项目的文本颜色
【发布时间】:2012-09-13 12:48:25
【问题描述】:


我在为 Spinner 设置文本颜色时遇到问题。我见过很少的例子,但大多数都有来自strings.xml 和res folder 的 ArrayAdapter 和 String 数组,因为我的 Spinner 的项目是从 SQLite 数据库中检索的,所以我认为它可能无济于事。

这是我的 Spinner 的代码 PersonalInformation.java

public class PersonalInformation extends Activity
{
    EditText txtLikes, txtDislikes, txtType, txtDate;
    Button btnView, btnBack;
    Spinner nameSpinner;    

    final Context context = this;

    private int namesSpinnerId;        

    LikesDBAdapter likeDB = new LikesDBAdapter(this);
    DislikesDBAdapter dlikeDB = new DislikesDBAdapter(this);


    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.info);

        BuddyDBAdapter buddyDB = new BuddyDBAdapter(this);
        buddyDB.open();

        Cursor friendsCursor = buddyDB.getAllNames();
        startManagingCursor(friendsCursor); 

        String[] from = new String[]{BuddyDBAdapter.KEY_NAME};
        int[] to = new int[]{R.id.name};

        SimpleCursorAdapter friendsCursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, friendsCursor, from, to);
        friendsCursorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        nameSpinner = (Spinner)findViewById(R.id.nameSpinner);
        nameSpinner.setAdapter(friendsCursorAdapter);
        //buddyDB.close();


        nameSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
            {
                 @Override
                 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
                 {
                     Cursor c = (Cursor)parent.getItemAtPosition(pos);
                     namesSpinnerId = c.getInt(c.getColumnIndexOrThrow(BuddyDBAdapter.KEY_ROWID));
                 }

                @Override
                public void onNothingSelected(AdapterView<?> parent)
                {
                    // TODO Auto-generated method stub

                }
            });
        buddyDB.close();

而且,这些是 Spinner 在 info.xml 中的布局代码

<Spinner
        style="@style/SpinnerStyle"
        android:id="@+id/nameSpinner"        
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/friends_prompt"
        android:textColor="@color/green" />

请帮助我如何在 Spinner 中设置项目文本颜色。
我将不胜感激提供的任何帮助。谢谢。! =)

【问题讨论】:

标签: android android-layout text colors spinner


【解决方案1】:

为您的微调器项目创建一个 xml 文件。并将其放入布局文件夹中

spinner_view.xml:


<TextView  
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  android:gravity="left"  
  android:textColor="@color/green"         
/>

最后在您的代码中。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_view,yourList);

【讨论】:

  • 您的回答对我也有帮助。谢谢 =)
  • 仍然没有颜色变化.. :(
【解决方案2】:

【讨论】:

    【解决方案3】:

    修改文本颜色在你的 res/layout 文件夹中创建一个新的 xml 文件

    <TextView android:id="@+id/spinnerText" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true"
        android:textColor="#2f4f4f" 
        android:textSize="20dp" 
        xmlns:android="http://schemas.android.com/apk/res/android"/>
    

    并像这样调用适配器:

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                    R.array.spinner_array,
                    R.layout.spinner_text);
    

    【讨论】:

      【解决方案4】:

      这是simple_spinner_drowdown_item.xml的源码

      <?xml version="1.0" encoding="utf-8"?>
      <!--
      /* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
      **
      ** Copyright 2008, The Android Open Source Project
      **
      ** Licensed under the Apache License, Version 2.0 (the "License"); 
      ** you may not use this file except in compliance with the License. 
      ** You may obtain a copy of the License at 
      **
      **     http://www.apache.org/licenses/LICENSE-2.0 
      **
      ** Unless required by applicable law or agreed to in writing, software 
      ** distributed under the License is distributed on an "AS IS" BASIS, 
      ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
      ** See the License for the specific language governing permissions and 
      ** limitations under the License.
      */
      -->
      <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:textAlignment="inherit"/>
      

      这里的问题是 ?android:attr/dropdownListPreferredItemHeight 不公开,但似乎是 48 dip 或 64dip: https://android.googlesource.com/platform/frameworks/base/+/414c4984fdbb03b688bb5c3c76d20100fce3d067%5E1..414c4984fdbb03b688bb5c3c76d20100fce3d067/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 2019-02-16
        相关资源
        最近更新 更多