2015-07-20 59 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="">,微調項目正常顯示並且不需要使用自定義適配器。