2015-07-20 63 views
0

我在布局中的微调,它被定义为安卓:白色上的白色微调

<Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/bithYearSpinner" 
     android:layout_marginTop="15dp" /> 

微调的声明和适配器:

birthYearSpinner = (Spinner) findViewById(R.id.bithYearSpinner); 
String[] years = getResources().getStringArray(R.array.bithYears); 
ArrayAdapter<String> adapter = new ArrayAdapter<String(this,android.R.layout.simple_spinner_dropdown_item,years); 
birthYearSpinner.setAdapter(adapter); 

的问题是,微调显示了白字在不可能看到它的项目的白色背景。我已经做了一个关于它的研究,有些人有同样的问题,有一些解决方案,但他们不为我工作。我怎样才能解决这个问题 ?任何帮助,将不胜感激。

回答

0

要修复它,您可以使用自定义xml布局的微调项目。通过这样做,您可以自定义您的微调项目文本的颜色和背景。

创建item_spinner.xml然后,

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textSize="19sp" 
    android:textColor="#111111"   
    android:padding="8dp" 
    /> 

和设置您的自定义布局到适配器这样的:

birthYearSpinner = (Spinner) findViewById(R.id.bithYearSpinner); 
String[] years = getResources().getStringArray(R.array.bithYears); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item_spinner, years); 
birthYearSpinner.setAdapter(adapter); 

编辑

如果是在片段,尝试用getActivity()替换this。请参阅this answer以供参考。

+0

仍然有同样的问题。 – Tartar

+0

@Tartar它在片段?我已经更新了我的答案。 –

+0

它不在片段中。 – Tartar

0

的微调,并将其命名为spinner_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/theme_color" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/spinnerText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:background="#ff00ff" 
     android:gravity="center" 
     android:paddingBottom="5dip" 
     android:paddingTop="5dip" 
     android:text="" 
     android:textColor="#000000" 
     android:textSize="18sp" /> 
</LinearLayout> 

现在创建适配器并将它命名为DropDownAdapter.java

package com.ronem.adapters; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import com.ronem.goldsilverpricenepal.R; 


public class DropDownAdapter extends ArrayAdapter<String> { 
    LayoutInflater inflater; 
    String[] genereValue; 

    public DropDownAdapter(Context context, int textViewResourceId, 
          String[] genereValue) { 
     super(context, textViewResourceId, genereValue); 
     inflater = LayoutInflater.from(context); 
     this.genereValue = genereValue; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 

     // LayoutInflater inflater = getLayoutInflater(); 
     convertView = inflater.inflate(R.layout.spinner_item_layou, parent, false); 
     TextView label = (TextView) convertView.findViewById(R.id.spinnerText); 
     label.setText(genereValue[position]); 


     return convertView; 
    } 
    } 

现在初始化和设置自定义适配器创建自定义的RowLayout如图您活动

DropDownAdapter dAdapter = new DropDownAdapter(this, R.layout.spinner_item_layou, spinnerValues); 
     itemSpinner.setAdapter(dAdapter); 
+0

ronem是什么?图书馆什么的? – Tartar

+0

哈哈没什么jst我的包名bro –

+0

ahaha我很抱歉 – Tartar

0

当我更改我的资源阵列<array name=""><string-array name="">,微调项目正常显示并且不需要使用自定义适配器。