更改Android Spinner第一个项目的背景颜色



我想更改微调器的第一个下拉菜单背景颜色。有可能吗?例如,我有3个项目菜单用于性别选择。1( 选择你的性别2(男性3(女性。我想在微调器下拉列表中显示这3项。我想把第一个项目的背景改为浅蓝色,其他两个项目应该是白色。有可能吗

使用微调器适配器怎么样?

例如

ArrayList<String> testarray = new ArrayList<String>();
testarray.add("item0");
testarray.add("item1");
testarray.add("item2");
testarray.add("item3");
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, testarray) {
@Override      
public boolean isEnabled(int position) {
return position != 1;                             
}
@Override                
public boolean areAllItemsEnabled() {
return false;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent){
View v = convertView;
if (v == null) {
Context mContext = this.getContext();
LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
TextView tv = (TextView) v.findViewById(R.id.spinnerTarget);
tv.setText(testarray.get(position));
switch (position) {
case 0:
tv.setTextColor(Color.RED);  
break; 
case 1:
tv.setTextColor(Color.BLUE);
break;
default:
tv.setTextColor(Color.BLACK);
break;
}
return v;  
}              
};
pSpinner.setAdapter(spinnerAdapter); 

这是行的simple_spinner_dropdown_item.xml。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinnerTarget"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14pt" />

exmaple code change text颜色。所以你可以尝试改变背景色

我为适配器创建了一个单独的类。这是

class GenderDropDownAdapter(
private val mContext: Context,
private val genderList: ArrayList<String>
) : ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_dropdown_item, genderList) {
override fun areAllItemsEnabled(): Boolean {
return false
}
override fun isEnabled(position: Int): Boolean {
return position != 0
}
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
var customView = convertView
if (customView == null) {
val mContext = this.context
val vi: LayoutInflater = mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
customView = vi.inflate(R.layout.item_gender_dropdown, null)
}
val genderTextView: TextView = customView?.findViewById<View>(R.id.gender_dropdown_text) as TextView
genderTextView.text = genderList[position]
if (position == 0) {
genderTextView.setBackgroundColor(mContext.resources.getColor(R.color.colorAccent))
genderTextView.setTextColor(mContext.resources.getColor(R.color.white))
} else {
genderTextView.setTextColor(mContext.resources.getColor(R.color.black))
}
return customView
}
}

并在我的活动中使用此适配器

class PersonalDetailActivity : BaseActivity<AuthenticationViewModel>(), AdapterView.OnItemSelectedListener {
private val genderList = arrayListOf(
"Select Gender",
"Male",
"Female"
)
override fun getLayoutResource() = R.layout.activity_personal_detail
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val genderDropDownAdapter = GenderDropDownAdapter(baseContext, genderList)
gender_spinner.adapter = genderDropDownAdapter
gender_spinner.onItemSelectedListener = this
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
gender = when (position) {
0 -> null
1 -> "M"
else -> "F"
}
}
}

最新更新