是否可以将Spinner列表中的特定条目显示为已禁用?
也就是说,我想总是显示一个带有四个条目的微调器(例如,北,南,东和西),但我希望能够禁用其中任何一个,这样看起来是灰色的,不可选择。
这是可能的,还是我每次都要重新创建列表,而忽略了无效的条目?
答案 0 :(得分:35)
// Create spinner month, and disable month < today
List<CharSequence> listMonth = new ArrayList<CharSequence>();
for (int m = 0; m < 12; m++) {
if (m < 9) {
listMonth.add("0" + (m + 1));
} else {
listMonth.add("" + (m + 1));
}
}
// Create spinner item
adapterMonth = new ArrayAdapter<CharSequence>(this,
R.layout.layout_spinner_item, listMonth) {
// Disable click item < month current
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
if (year <= max_year && position < max_month - 1) {
return false;
}
return true;
}
// Change color item
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
View mView = super.getDropDownView(position, convertView, parent);
TextView mTextView = (TextView) mView;
if (year <= max_year && position < max_month - 1) {
mTextView.setTextColor(Color.GRAY);
} else {
mTextView.setTextColor(Color.BLACK);
}
return mView;
}
};
adapterMonth
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn2.setAdapter(adapterMonth);
答案 1 :(得分:4)
有人刚刚发布了您问题的解决方案,请参阅此old post。
答案 2 :(得分:4)
\
答案 3 :(得分:3)
这可能吗
它不会出现。您使用ListView
执行此操作的方式涉及areAllItemsEnabled()
和isEnabled()
。但是,这些是ListAdapter
接口上的方法,而不是SpinnerAdapter
接口。所以,我怀疑它们会被Spinner
忽略。
答案 4 :(得分:0)
class SpinnerAdapter(context: Context, resource: Int, list: ArrayList<String>)
: ArrayAdapter<String>(context, resource, list) {
override fun isEnabled(position: Int): Boolean {
// select position to disable
return position != 0
}
}